Python Pandas - 合并 CSV 并添加文件名

标签 python pandas csv dataframe glob

我正在尝试将 CSV 文件合并到一个文件夹中来分析它们。另外,我想将每个文件的文件名附加为一列,以便我可以找出哪些数据来自哪个文件。我看过类似的问题,但没有一个对我有用。

这是我正在使用的代码。此文件夹中有 24 个 CSV 文件,因为稍后使用 cat 合并 CSV 文件会很容易,所以即使是告诉我如何在每个文件中附加文件名的方法也是完美的。任何帮助都会很棒。

import pandas as pd
import os
import glob
import csv
path=r'/home/videept/Downloads/A_DeviceMotion_data/A_DeviceMotion_data/dws_1/'
with open('output.csv', 'w', newline='') as f_output:
    csv_output = csv.writer(f_output)

    for filename in glob.glob(os.path.join(path,"*.csv")):
        with open(filename, newline='') as f_input:
            csv_input = csv.reader(f_input)

            for row in csv_input:
                row.insert(0, filename)
                csv_output.writerow(row)

当我这样做时,单元格会无限循环,甚至不会创建新文件。我不确定如何才能看到正在发生的事情的进展,所以任何关于这方面的想法也都很棒。谢谢:)

最佳答案

我会这样做(前提是您使用的是 Python 3.4+):

import pandas as pd
from pathlib import Path

source_files = sorted(Path('path_to_source_directory').glob('*.csv'))

dataframes = []
for file in source_files:
    df = pd.read_csv(file) # additional arguments up to your needs
    df['source'] = file.name
    dataframes.append(df)

df_all = pd.concat(dataframes)

这样,每一行都有一列代表其源文件,以便于过滤和分析。

关于Python Pandas - 合并 CSV 并添加文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56882725/

相关文章:

mysql - 从 MySQL 中的 CSV 文件导入数据

python - 如何根据其他列中的条件将 pandas df 列中的多个值更改为 np.nan?

python - 使用 Pandas 计算头对头统计数据

csv 文件中的 Excel 尾随逗号错误

csv - 仅从 Neo4j 中的大型 csv 文件加载少量样本

Python - 使用 xlsxwriter 创建依赖下拉列表

python - 如何在 Python 中获取类的模块实例?

python - 避免在 Dask 中重新计算相同的值?

python - 将带有子图的 Pandas 图保存到一个文件中

python - 比较多列中的值并在 Python 中的另一列中添加新值