使用[]运算符作为Series,无法切割DataFrame

时间:2016-04-12 02:12:21

标签: python-3.x pandas dataframe series

这是我刚才意识到的,希望它对像我这样的熊猫初学者有用 - 为什么最后一行会出错?因为当从一个DataFrame中选择一个单独的列时,它就变成了一个Series,可以使用简洁的语法直接索引为[]。但是,当您从DataFrame中选择列列表时,它仍然会返回一个无法使用[]直接切片的DataFrame。

fadeOut

1 个答案:

答案 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