【问题标题】:to concat csv files having different dimensions连接具有不同尺寸的 csv 文件
【发布时间】:2021-01-23 02:53:21
【问题描述】:

我有 10 个不同尺寸的 csv 文件,所以我想将它连接起来,有 10 个 csv 文件。 看起来像,所以我想将它连接成一个文件,但是每当我这样做时,格式都会改变。

我想要一个csv文件

dfs = glob.glob(path + '*.csv')

result = pd.concat([pd.read_csv(df,header=None) for df in dfs])

result.to_csv(path + 'merge.csv',header=None)

【问题讨论】:

  • 您可能应该使用pd.concat([...], axis=1),但是您的代码的结果是什么?它会引发错误吗?它会输出不需要的结果吗?
  • 你有没有费心看看 pd.concat 甚至做了什么?打赌你会很快找到答案^

标签: python pandas csv concatenation


【解决方案1】:

你必须使用.concat

以下代码仅适用于 少数 Csv 文件(此处为 3)

df1 = pd.read_csv(r"address\1.csv",
                  index_col=[0], parse_dates=[0])
df2 = pd.read_csv(r"address\2.csv",
                  index_col=[0], parse_dates=[0])
df3 = pd.read_csv(r"address\3.csv",
                  index_col=[0], parse_dates=[0])

finaldf = pd.concat([df1, df2, df3], axis=1, join='inner').sort_index()
finaldf.to_csv('result.csv')

使用下面的代码,您可以在同一目录中连接您想要的 infinite csv 文件:

import pandas as pd
import os

os.chdir(path)

dfs = [pd.read_csv(f, index_col=[0], parse_dates=[0])
        for f in os.listdir(os.getcwd()) if f.endswith('csv')]

result_csv = pd.concat(dfs, axis=1, join='inner').sort_index()
result_csv.to_csv('result.csv')

它会保存到您上面使用的path 中的result.csv

【讨论】:

  • ValueError: Shape of passed values is (1261, 9), indices imply (467, 9) 给了我这个错误
  • @KrupaliMistry 在我发布之前它对我有用,你可以使用join 而不是concat 我认为这将帮助你解决错误
  • 试试这个:dfs = [pd.read_csv(f, parse_dates=[0]) for f in os.listdir(os.getcwd()) if f.endswith('csv')]
  • @KrupaliMistry result_csv = pd.concat(dfs, axis=1); result_csv.to_csv('result.csv')
  • @KrupaliMistry 我编辑了答案检查第一部分(对于几个 csv)
【解决方案2】:

您可能希望水平合并 csv 文件。例如,使用axis=1

df1 = pd.read_csv('f1.txt')
df2 = pd.read_csv('f2.txt')

combined = pd.concat([df1, df2], axis=1)
combined.to_csv('merged_csv.csv')

这对我有用:

import pandas as pd
import os

os.chdir(path)

dfs = [pd.read_csv(f, parse_dates=[0])
        for f in os.listdir(os.getcwd()) if f.endswith('csv')]

result_csv = pd.concat(dfs, axis=1)
result_csv.to_csv('result.csv')

【讨论】:

    猜你喜欢
    • 2019-10-16
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多