首页 > 解决方案 > 如何附加多个 CSV 文件并在 Python 中添加指示文件名的附加列?

问题描述

我在一个文件夹中有 20 多个 CSV 文件。所有文件都具有相同的结构,它们只是代表不同的日子。

例子:

Day01.csv

Day02.csv

Day03.csv

Day04.csv(等等...)

这些文件只包含两个数字列:x 和 y。我想将所有这些 csv 文件一起附加到一个大文件中,并为文件名(天)添加一列。我已经探索了类似的示例来生成以下代码,但是此代码将每个 y 添加到单独的列(Y1、Y2、Y3、Y4 ......等等)。我想简单地将这个附加文件作为三列:x、y、文件名。如何修改代码以进行正确的附加?

我已经尝试过此示例中的代码:Read multiple csv files and Add filename as new column in pandas

import pandas as pd
import os
os.chdir('C:....path to my folder')
files = os.listdir()
df = pd.concat([pd.read_csv(fp).assign(New=os.path.basename(fp)) for fp in files])

但是,此代码不会将所有 Y 值附加到一列下。(但是,所有其他方面似乎都有效)。有人可以帮助编写代码以使所有 Y 值都在单个列下吗?

标签: pythonpandascsvappend

解决方案


以下应该通过filename在将 附加dataframe到列表之前创建列来工作。

import os
import pandas as pd

file_list = []
for file in os.listdir():
    if file.endswith('.csv'):
        df = pd.read_csv(file,sep=";")
        df['filename'] = file
        file_list.append(df)

all_days = pd.concat(file_list, ignore_index=True)
all_days.to_csv("all.txt")

推荐阅读