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

sam*_*and 3 python csv pandas

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

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

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

jpp*_*jpp 5

这可以通过os标准库和 3rd 方库实现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')
Run Code Online (Sandbox Code Playgroud)