从数据框中的列表中过滤出列的最佳方法

时间:2019-07-14 17:21:12

标签: python-3.x pandas dataframe

只是想用另一种方法来获取对df.columns的熊猫进行匹配/过滤的列表。

下面的代码段效果很好,但是期待其他方法。 甚至我们可以考虑一个功能,请原谅我只是为了学习熊猫。

# list of columns names to be matched & checked
>>> matchObj = ['equity01',  'equity02',  'equity1'  'equity2']

# DataFrame construct
>>> df = pd.DataFrame({'equity01': [1, 2, 3], 'equity02': [4, 5, 6], 'equity03': [7, 8, 9], 'equity04': [2, 3, 4], 'equity05': [5, 6, 7]})
>>> df
   equity01  equity02  equity03  equity04  equity05
0         1         4         7         2         5
1         2         5         8         3         6
2         3         6         9         4         7

# One way to  with list comprehension as follows..
>>> print(df[[col for col in matchObj if col in df.columns]])
   equity01  equity02
0         1         4
1         2         5
2         3         6

非常感谢您提供任何建议和解决方案。

2 个答案:

答案 0 :(得分:2)

是,使用pd.Index.intersection()

df[df.columns.intersection(matchObj)]

   equity01  equity02
0         1         4
1         2         5
2         3         6

答案 1 :(得分:2)

使用pd.Index.isin()

df.loc[:,df.columns.isin(matchObj)]
   equity01  equity02
0         1         4
1         2         5
2         3         6
相关问题