我有一个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']
答案 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])