Python Pandas : Select 数据并忽略 KeyErrors

Python Pandas : Select data and ignoring KeyErrors

注意:我的问题不是 ,而是更微妙的问题。

假设我有一个看起来像这样的数据框

df = 
    A     B    C
0   3     3    1
1   2     1    9

df[["A", "B", "D"]] 将引发 KeyError

有没有pythonpandas的方法让df[["A", "B", "D"]] == df[["A", "B"]]? (即:只有 select 存在的列。)

一个解决方案可能是

good_columns = list(set(df.columns).intersection(["A", "B", "D"]))
mydf = df[good_columns]

但这有两个问题:

您可以使用 filter,这将忽略任何额外的键:

df.filter(["A","B","D"])
    A     B  
0   3     3   
1   2     1   

您可以使用条件列表理解:

target_cols = ['A', 'B', 'D']
>>> df[[c for c in target_cols if c in df]]
   A  B
0  3  3
1  2  1