如果未在熊猫的特定列表中显示列,如何删除列

时间:2019-07-04 16:10:35

标签: pandas

我有一个pandas数据框,并且有一些列。如果列表中未显示列,我想删除它们。

pandas数据框列:

list(pandas_df.columns.values)

结果:

['id', 'name' ,'region', 'city']

我期望的列名:

final_table_columns = ['id', 'name', 'year']

x运算后的结果应该是:

list(pandas_df.columns.values)

['id', 'name']

3 个答案:

答案 0 :(得分:4)

使用Index.intersection来查找索引和(列)标签列表的交集:

c = [2, 2, 0, 0, 0, 1, 0, 2]

答案 1 :(得分:3)

要就地完成,请考虑 Index.difference。这在之前的任何答案中都没有记录。

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

要创建新的数据框,请考虑 Index.intersection。这是来自unutbu的回答。

df_final = df[df.columns.intersection(final_table_columns)]

答案 2 :(得分:1)

您可以使用列表推导为drop()创建所有列名

final_table_columns = ['id', 'name', 'year']
df = df.drop(columns=[col for col in df if col not in final_table_columns])