如何在熊猫中过滤列

时间:2019-07-25 16:18:03

标签: python pandas

我正在寻找xi[,4]的反面。也就是说,我有要保留的列列表,并且需要将其余的列放到适当的位置。我尝试了以下方法:

df.drop(columns, inplace=True)

哪些印刷品

dfs = [pd.DataFrame(np.array(([1, 2, 3], [4, 5, 6])),columns=['one', 'two', 'three']),
       pd.DataFrame(np.array(([1, 2, 3], [4, 5, 6])),columns=['one', 'two', 'four'])]

s = list(set(dfs[0].columns).intersection(*[x.columns for x in dfs[1:]]))
print(s)
for df in dfs:
    df = df.filter(s, axis=1)
print([df.shape for df in dfs])

我要

>> ['one', 'two']
>> [(2, 3), (2, 3)]

我了解为什么这段代码会失败,但是没有一个有效的“就地”选项。

1 个答案:

答案 0 :(得分:2)

假设列名是唯一的,您可以这样做:

all = set(df.columns.tolist())
to_drop = list(all - set(s))
df.drop(columns=to_drop, inplace=True)

编辑:您还可以将pd.Index.difference()drop与之配合使用:

df.drop(df.columns.difference(list_of_col),inplace=True)