我有一个包含多个列的pandas DataFrame(列名称是数字; 1,2,...),如果它们确实存在,我想复制其中一些。
例如df1 = df[[1,2,3,4]]
但是可能会发生某些列在df中不存在,例如df可能只有列1,2和4或列1和2等
答案 0 :(得分:10)
In [97]:
df = pd.DataFrame(columns=[1,2,4])
df.loc[:,df.columns.isin([1,2,3,4,])]
Out[97]:
Empty DataFrame
Columns: [1, 2, 4]
Index: []
答案 1 :(得分:1)
一个简单的方法是获取一组公共列:
df[df.columns & [1, 2, 3, 4]]
答案 2 :(得分:0)
一种可能的方法:
df[df.columns.intersection(set(['list', 'of', 'cols']))]
例如:
$ ipython
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
import pandas as pd
df = pd.DataFrame(columns=[1,2,3,4])
df
Out[1]:
Empty DataFrame
Columns: [1, 2, 3, 4]
Index: []
In [2]:
df[df.columns.intersection(set([1, 2, 2, 5]))]
Out[2]:
Empty DataFrame
Columns: [1, 2]
Index: []
In [3]:
pd.__version__
Out[3]:
'1.2.1'