Python 3.x 根据基于列表对象的检查匹配列名称
我试图将一个列表对象与pandas DataFrame匹配,这里有一个条件,其中list对象包含列名,因此,有时DataFrame可能包含Python 3.x 根据基于列表对象的检查匹配列名称,python-3.x,pandas,Python 3.x,Pandas,我试图将一个列表对象与pandas DataFrame匹配,这里有一个条件,其中list对象包含列名,因此,有时DataFrame可能包含matchObj中的所有名称,但有时DataFrame只有很少的列名,只有在这种情况下,它无法完成任务 下面是我的示例列表,例如matchObj和matchObj1: >>> matchObj = ['equity01', 'equity02', 'equity1' 'equity2'] >>> matchObj1 =
matchObj
中的所有名称,但有时DataFrame只有很少的列名,只有在这种情况下,它无法完成任务
下面是我的示例列表,例如matchObj
和matchObj1
:
>>> matchObj = ['equity01', 'equity02', 'equity1' 'equity2']
>>> matchObj1 = ['equity01', 'equity02']
以下是数据帧:
>>> df
equity01 equity02 equity03 equity04 equity05
0 1 4 7 2 5
1 2 5 8 3 6
2 3 6 9 4 7
当我对df使用listmatchobj1
时,它在查找列名时起作用
>>> print(df[matchObj1])
equity01 equity02
0 1 4
1 2 5
2 3 6
但是,它无法使用matchobj
,因为df不包含equity1 equity2
,因此抛出键错误:“['equity1equity2']不在索引中”
打印(df[matchObj])
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/grid/common/pkgs/python/v3.6.1/lib/python3.6/site packages/pandas/core/frame.py”,第2133行,在__
返回self.\u getitem\u数组(键)
文件“/grid/common/pkgs/python/v3.6.1/lib/python3.6/site packages/pandas/core/frame.py”,第2177行,在_getitem_数组中
索引器=self.loc.\u转换为索引器(键,轴=1)
文件“/grid/common/pkgs/python/v3.6.1/lib/python3.6/site packages/pandas/core/index.py”,第1269行,在“convert\u to\u indexer”中
.format(mask=objarr[mask]))
KeyError:“['equity1equity2']不在索引中”
使用-
print(df[[i for i in matchObj if i in df.columns]])
输出
equity01 equity02
0 1 4
1 2 5
2 3 6
解释
[如果i在df.columns中,则i在matchObj中表示i]
仅获取df
中存在的列。忽略所有其他的。希望有帮助
equity01 equity02
0 1 4
1 2 5
2 3 6