这是我刚才意识到的,希望它对像我这样的熊猫初学者有用 - 为什么最后一行会出错?因为当从一个DataFrame中选择一个单独的列时,它就变成了一个Series,可以使用简洁的语法直接索引为[]。但是,当您从DataFrame中选择列列表时,它仍然会返回一个无法使用[]直接切片的DataFrame。
fadeOut
答案 0 :(得分:1)
要使最后一行有效,您需要这样df[['age']]['age'][df['name'] =='John']
。这显然是不好的风格。你的最后一行代码不起作用的原因是df[['age']]
返回一个数据框,其中一列名为'age',索引从0到7。
In [4]: df[['age']]
Out[4]:
age
0 15
1 30
2 41
3 66
4 23
5 7
6 80
7 52
当您尝试使用'John'对数据框进行切片时,Pandas会检查数据框,但无法找到任何名为 John 的列。您可以执行以下操作来查找John的年龄
In [15]: df[['age']]['age'][df['name'] =='John']
Out[15]:
0 15
Name: age, dtype: int64
# get the exact value
In [16]: df[['age']]['age'][df['name'] =='John'][0]
Out[16]:
15
# or simply
In [18]: df[df['name'] =='John']['age'][0]
Out[18]: 15