【发布时间】:2021-12-04 05:36:09
【问题描述】:
当我这样做时
test = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
print(type(test))
print(test)
print('\n')
print(type(test[1]))
print(test[1])
print('\n')
print(type(test[[1]]))
print(test[[1]])
我明白了。
<class 'pandas.core.frame.DataFrame'>
0 1 2
0 1 2 3
1 4 5 6
<class 'pandas.core.series.Series'>
0 2
1 5
Name: 1, dtype: int64
<class 'pandas.core.frame.DataFrame'>
1
0 2
1 5
我认为当我指定 DataFrame 列的键之一时,我很自然会得到系列。
但我不明白为什么当我在双括号中指定 DataFrame 列的键之一时会得到 DataFrame。
发生了什么?
【问题讨论】:
-
test[1]时您没有指定行键,但实际上您正在访问数据框的第 1 列。检查您的列名,它们是0, 1, 2。现在,当您尝试访问此df[[1]]时,您正在传递一个列列表,即[1],这就是它返回一个数据框的原因 -
感谢您的回答。现在我明白发生了什么。请在回答中写出来,以便我支持您的回答。