【发布时间】:2017-03-08 10:29:14
【问题描述】:
即使列标签不存在,在某些情况下访问 Pandas 数据框也不会引发异常。
我应该如何检查这些情况,以避免读取错误的结果?
a = pd.DataFrame(np.zeros((5,2)), columns=['la', 'lb'])
a
Out[349]:
la lb
0 0.0 0.0
1 0.0 0.0
2 0.0 0.0
3 0.0 0.0
4 0.0 0.0
a.loc[:, 'lc'] # Raised exception as expected.
a.loc[:, ['la', 'lb', 'lc']] # Not expected.
Out[353]:
la lb lc
0 0.0 0.0 NaN
1 0.0 0.0 NaN
2 0.0 0.0 NaN
3 0.0 0.0 NaN
4 0.0 0.0 NaN
a.loc[:, ['la', 'wrong_lb', 'lc']] # Not expected.
Out[354]:
la wrong_lb lc
0 0.0 NaN NaN
1 0.0 NaN NaN
2 0.0 NaN NaN
3 0.0 NaN NaN
4 0.0 NaN NaN
更新:有一个建议的重复问题 (Safe label-based selection in DataFrame),但它是关于行选择的,我的问题是关于列选择的。
【问题讨论】:
-
我没有看到那个问题,但它是关于行选择的,我的问题是关于列选择的。
-
使用
loc进行基于标签的选择,原理完全相同。 -
我不知道它们是否相同,这些信息不应该在答案中进行解释吗?此外,这里接受的答案与那里不同。实际上,我希望有一个熊猫功能可以解决我的问题,但是正如答案中指出的那样,手动过滤列是要走的路。