如何连接目录中的所有CSV,使用Python将CSV名称添加为列

时间:2018-04-27 16:25:01

标签: python pandas csv

  • 我有一个包含大约100个CSV(Downloads/challenges)的文件夹。
  • 每个CSV具有相同的50+列。
  • 每个CSV的标题都是azerbaijan_challenge_entrants.csv

我想创建一个新CSV(all_entrants.csv),其中包含来自所有100个CSV的所有数据,添加一个新列:challenge,其中应包含行数据来自的CSV名称从

我通常喜欢Python这样的任务。但我正在努力使这项工作。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

标准库和第三方库os中的pandas可以实现此目的:

import os
import pandas as pd

mypath = os.path.join('Downloads', 'challenges')

# get list of files
files = [f for f in os.listdir(mypath) if os.path.isfile(os.path.join(mypath, f))]

# build list of dataframes, adding "challenge" column
dfs = [pd.read_csv(os.path.join(mypath, f)).assign(challenge=f) for f in files]

# concatenate dataframes into one
df = pd.concat(dfs, ignore_index=True)

# write to csv
df.to_csv('all_entrants.csv')