【问题标题】:How to read muliple csv files and merge them?如何读取多个 csv 文件并合并它们?
【发布时间】:2019-06-13 00:31:24
【问题描述】:

这些是我存在于特定目录中的 csv 文件:

output0
output1
output3
output4

out0
out1
out2
out3

我应该合并 output0 和 out0 , output1 和 out1 等等 ..

我只将 output0 与 out0 合并,但我没有找到一种方法来处理文件的其余部分

PS:这只是一个例子,我的目录中有 100 个 csv 文件

这是我的代码:

import pandas as pd
import time
a = pd.read_csv("C:/Users/AQ42770/Documents/merge/output0.csv")
b = pd.read_csv("C:/Users/AQ42770/Documents/merge/out0.csv")
merged = a.merge(b, on='Class')
merged.to_csv("output.csv", index=False)

time.sleep(60)
df = pd.read_csv("output.csv")
k=df.loc[~df.Class.duplicated(keep='last')]
k.to_csv("test1.csv", index=False, na_rep='NaN')

【问题讨论】:

  • for-loop 内部执行 - 并使用来自for 的值来创建文件名output0output1 等。

标签: python pandas csv dataframe


【解决方案1】:

您可以使用 for 循环和字符串格式来创建 2 个变量,str_astr_b。然后将这些变量读入pd.read_csv

类似:

for i in range(number_of _files):
    str_a = "path/to/file%d.csv" % i
    str_b = "path/to/otherfile%d.csv" % i

    a = pd.read_csv(str_a)
    b = pd.read_csv(str_b)

【讨论】:

  • 谢谢,但有错误:a = pd.read_csv(str_a)Invalid file path or buffer object type: <class 'NoneType'>任何帮助!
  • 我已经在一些测试文件上试过这个,它工作正常,但我使用的是 Linux,所以路径的指定有点不同,从你的错误我怀疑你正在使用的路径有问题,仔细检查您指定的路径确实存在,它输入正确,并且 pd.read_csv 可以接受该字符串中的所有字符(我之前看到路径中的冒号会导致问题)
【解决方案2】:

您可以使用glob 获取 CSV 文件列表,将所有文件循环读取到 DataFrame 列表中,并将结果列表的成员连接起来:

import glob
df = pd.concat(pd.read_csv(f) for f in glob.glob("*.csv"))

【讨论】:

  • 谢谢,我发现了这个问题,但我不应该将它们合并在一起。我应该将 output0 与 out0 和 output1 与 out1 合并,而不是全部!
猜你喜欢
  • 2022-09-23
  • 2017-02-15
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多