如何使用Python组合多个CSV并在列中包含filename作为条目



我有多个csv,我想使用Python/panda组合它们。但是,我需要将每个csv的文件名作为一个新的"filename"列中的条目包含在输出中。

例如:

csv文件:

  • QB305707.csv
  • QB305708.csv
  • QB305709.csv

每个csv:中的列

1.5<1.4>
Id 电压 电流
1151616 242
151617 240

您可以在读取循环中的文件时使用df.assign,也可以在pd.concat:中使用keys

list_of_files = ['pathQB305707.csv','pathQB305708.csv','pathQB305709.csv']
out = pd.concat((pd.read_csv(file).assign(filename=file) for file in list_of_files))

或者使用keys创建一个单独级别的索引,文件名为

pd.concat((pd.read_csv(file) for file in list_of_files),keys=list_of_files )

如果你的文件夹中还没有文件列表,你可以先使用下面的片段来获得文件列表:

import glob
list_of_files  = glob.glob(r'path_to_folder*.csv')

所以最后的代码看起来像:

import glob
import os
list_of_files  = glob.glob(r'path_to_folder*.csv')
out = pd.concat((pd.read_csv(file).assign(filename=os.path.split(file)[-1])
for file in list_of_files))

虽然@anky的解决方案在理想情况下是正确的,但我认为它也可以通过以下方式实现:

逐个导入CSV文件后,请执行以下操作:

filename1 = os.path.basename("path/to/file/QB305707.csv")
csv1Data = pd.read_csv(filename1)
# Assuming you did this with different variable names for each file
dfcsv1Data['filename'] = filename1
# Do this for all three DFs and simply concat / append all three dataframes together

相关内容

  • 没有找到相关文章

最新更新