注意:我的问题不是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"]
。答案 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