我正在寻找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)]
我了解为什么这段代码会失败,但是没有一个有效的“就地”选项。
答案 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)