Python Pandas:选择数据并忽略KeyErrors

时间:2015-11-30 05:51:26

标签: python pandas dataframe keyerror

注意:我的问题不是this one,而是一些更微妙的问题。

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

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

df[["A", "B", "D"]]会提出KeyError

是否有python pandas方式让df[["A", "B", "D"]] == df[["A", "B"]]? (即:只选择存在的列。)

一种解决方案可能是

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

但这有两个问题:

  • 它很笨重而且不够优雅。
  • mydf.columns的排序可以是["A", "B"]["B", "A"]

2 个答案:

答案 0 :(得分:2)

您可以使用filter,这会忽略任何额外的密钥:

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

答案 1 :(得分: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