如何存储列名以过滤Pandas数据帧中的列

时间:2018-04-18 14:26:53

标签: python list pandas

在一个文件中存储列名的最佳方法是什么(以及什么类型的文件?)以及数据框是否包含文件中的某些列而不是选择它(其他列将被删除)。 例如:

some_file_with_columns:
column_names = [col1, col3, col5, cola, colb, col6, colm]

Dataframes:
df1.columns= [col1, col2, col3, col4, col5, col6, col7]
df2.columns= [cola, colb, colc, cold, colm, colp]

处理后的所需输出:

df1.columns= [col1, col3, col5, col6, ]
df2.columns= [cola, colb, colm]

也许yaml文件? 我问这个是因为我有9个需要起诉的数据框,它们总共有近300列。如果我可以从脚本中删除列名并将它们存储在一些单独的文件中,我会很高兴。

2 个答案:

答案 0 :(得分:1)

您可以使用difference

df=df[:,df.columns.difference(column_names)]

答案 1 :(得分:1)

您有许多选项。选择对您的用例最有意义的内容。

这些选项假设您有一个包含列名的列表lst

df_cols = pd.DataFrame({'col': lst})

# csv - text file which is widely read
df_cols.to_csv('file.csv')

# pickle - serialized data, readable by identical version pandas
df_cols.to_pickle('file.pkl')

# excel - readable via MS Excel
df_cols.to_excel('file.xlsx')

然后只需使用pandas读取文件并转换为列表。