我有一个带有字符串类型(对象)列的常规 DataFrame。当我尝试使用相当于 WHERE 子句的列来过滤时,我得到了KeyError
当我使用点符号时。当使用括号表示法时,一切都很好。
我指的是这些说明:
df[df.colA == 'blah']
df[df['colA'] == 'blah']
第一个给出相当于
关键错误:错误
没有发布示例,因为我无法在为说明目的而构建的定制 DataFrame 上重现该问题:当我这样做时,两种符号都会产生相同的结果。
然后询问两者是否有区别以及为什么。
与标准括号相比,点符号只是访问内容的便捷快捷方式。值得注意的是,当列名称类似于sum
这已经是一个 DataFrame 方法了。我敢打赌,您的真实示例中的列名称会遇到该问题,因此它可以与括号选择配合使用,但要测试方法是否等于'blah'
.
下面是快速示例:
In [67]: df = pd.DataFrame(np.arange(10).reshape(5,2), columns=["number", "sum"])
In [68]: df
Out[68]:
number sum
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
In [69]: df.number == 0
Out[69]:
0 True
1 False
2 False
3 False
4 False
Name: number, dtype: bool
In [70]: df.sum == 0
Out[70]: False
In [71]: df['sum'] == 0
Out[71]:
0 False
1 False
2 False
3 False
4 False
Name: sum, dtype: bool
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)