Python:选择数据并忽略键错误

Python:选择数据并忽略键错误,python,pandas,dataframe,keyerror,Python,Pandas,Dataframe,Keyerror,注意:我的问题不是,而是一些更微妙的问题 假设我有一个像这样的数据框 df = A B C 0 3 3 1 1 2 1 9 df[[“A”、“B”、“D”]将引发一个KeyError 有没有办法让df[[“a”、“B”、“D”]==df[[“a”、“B”]]?(即:只需选择存在的列。) 一个解决办法可能是 good_columns = list(set(df.columns).intersection(["A", "B", "D"])

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

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

df = 
    A     B    C
0   3     3    1
1   2     1    9
df[[“A”、“B”、“D”]
将引发一个
KeyError

有没有办法让
df[[“a”、“B”、“D”]==df[[“a”、“B”]]
?(即:只需选择存在的列。)

一个解决办法可能是

good_columns = list(set(df.columns).intersection(["A", "B", "D"]))
mydf = df[good_columns]
但这有两个问题:

  • 它既笨重又不雅观
  • mydf.列的顺序可以是
    [“A”,“B”]
    [“B”,“A”]
您可以使用,这将忽略任何额外的键:

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

看起来这是一个
O(n)
检查df中是否有
c
。我会坚持@maxymoo的答案。谢谢非常感谢。我希望熊猫文档对每个功能都有使用范例,就像ScKIT-EnLeN.你为什么不考虑提交一些文件,文档是开始为开源项目做出贡献的一个好方法。