如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件

Posted

技术标签:

【中文标题】如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件【英文标题】:How do I append multiple CSV files using Pandas data structures in Python 【发布时间】:2015-11-23 13:37:09 【问题描述】:

我想将大约 10 个 CSV 文件附加到一个文件中。我的想法是将文件名分配给编号的 data_files,然后将它们附加到 while 循环中,但是我无法将文件更新到循环中的下一个编号的 date_file。我不断收到与“data_file 不存在”和“无法连接 'str' 和 'int' 对象”相关的错误。我什至不确定这是否是解决我的问题的现实方法。任何帮助将不胜感激。

import pandas as pd

path = '//pathname'
data_file1= path + 'filename1.csv'
data_file2= path + 'filename2.csv'
data_file3= path + 'filename3.csv'
data_file4= path + 'filename4.csv'
data_file5= path + 'filename5.csv'
data_file6= path + 'filename6.csv'
data_file7= path + 'filename7.csv'

df = pd.read_csv(data_file1)

x = 2
while x < 8:
     data_file = 'data file' + str(x)
     tmdDF = pd.read_csv(data_file)
     df = df.append(tmpDF)
     x += x + 1

【问题讨论】:

为什么要为此使用 pandas?如果您只是连接文件there are more efficient ways. 顺便说一句,您想要x += 1x = x + 1。您的最后一行将 x 增加 2。您正在尝试打开名为 'data file1' 、 'data file2' 等的文件,这就是它失败的原因。你不能像那样分配变量名,你可能想使用字典。当然,您也不应该几乎逐字重复同一行七次,您可以使用循环。 @PauloAlmeida 这些文件都有相同的标题行,我试图仅捕获标题下方的信息。一位同事建议为此使用 pandas 数据框。知道了这一点,你用 pandas 来做这个有意义吗?我非常愿意使用熊猫以外的东西,这只是其他人的初步建议。我对python知之甚少。 如果你想去掉header,比我链接里的方法稍微复杂一点,但是pandas还是没必要的,因为你不处理数据。我发布了一个使用 fileinput 模块的答案。 【参考方案1】:

您可以为此使用fileinput:

import fileinput

path = '//pathname'
files = [path + 'filename' + str(i) + '.csv' for i in range(1,8)]

with open('output.csv', 'w') as output, fileinput.input(files) as fh:
    for line in fh:
        if fileinput.isfirstline() and fileinput.lineno() != 1:
            continue
        output.write(line)  

【讨论】:

【参考方案2】:

不太确定您在循环中构造该字符串 data_file 时在做什么。您不能使用变量名称的字符串来寻址变量。同样正如 Paulo 所指出的,您也没有正确地增加索引。请尝试以下代码,但请注意,仅出于连接 csv 文件的目的,您当然不需要 pandas。

import pandas
filenames = ["filename1.csv", "filename2.csv", ...] # Fill in remaining files.
df = pandas.DataFrame()
for filename in filenames:
    df = df.append(pandas.read_csv(filename))
# df is now a dataframe of all the csv's in filenames appended together

【讨论】:

以上是关于如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中使用 matplotlib 和 pandas 绘制 CSV 数据

如何使用字符串列表在 Python 3 中搜索 pandas 数据框

如何在python中使用pandas将字典列表转换为数据框[重复]

如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件

如何使用 Pandas 在 Python 中对字典中的数据进行排序

如何使用 Plotly 在 Python 中使用 Pandas 数据框列设置散点图悬停信息