【问题标题】:How do I append multiple CSV files using Pandas data structures in Python如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件
【发布时间】: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 模块的答案。

标签: python csv pandas append


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2018-05-16
      • 2019-06-07
      • 2021-05-31
      • 2018-02-22
      相关资源
      最近更新 更多