【问题标题】:Python Concatenate Multiple CSV files with no headerPython连接多个没有标题的CSV文件
【发布时间】:2017-08-18 23:49:52
【问题描述】:

所以我有大约 3,000 个 csv 文件,它们的名称都不同。例如,CDEE.csv 和结构只是包含名称和金额的一行。

CDEE | 3993

我尝试连接,但我不断得到

CDEE | 3993 | AASE| 3939 .........

但我想要

CDEE | 3992
AASE | 3939
xxxx | yyyy

代码如下: 将熊猫导入为 pd 导入全局,操作系统

path = "/home/username/myfolder" 
os.chdir(path)
results = pd.DataFrame([])

for counter, file in enumerate(glob.glob(".csv*")):
    namedf = pd.read_csv(file,skiprows=0, usecols=[1,2,3])
    results = results.append(namedf)

results.to_csv('Combined.csv')

感谢您的帮助,我真的很感激!

【问题讨论】:

  • 您实际上是在使用 DataFrame 做任何事情,还是只是想连接文件?正如cat *.csv > csv_files.all 现在看起来很有希望......
  • 我在编辑帖子之前没有看到这一点。我和你在一起。
  • @JonClements 你应该把它写成答案......
  • 哇,我正在尝试!

标签: python pandas csv


【解决方案1】:

您需要使用pd.concat 记录在案的here

import pandas as pd
import os
import glob

path = "."
os.chdir(path)
results = pd.DataFrame()

for counter, current_file in enumerate(glob.glob("*.csv")):
    namedf = pd.read_csv(current_file, header=None, sep="|")
    print(namedf)
    results = pd.concat([results, namedf])

results.to_csv('Combined.csv', index=None, header=None, sep="|")

请注意,有几个错误需要修复:

  • glob.glob(".csv*") 更改为glob.glob("*.csv") 以获取所有以.csv 结尾的文件
  • 获得以下输出:
CDEE|3992 亚瑟|3939 xxxx|yyyy

您需要使用index=None 调用df.to_csv 以不写入索引,header=None 不写入标题和sep="|" 使用| 作为分隔符而不是默认的,

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 2022-11-04
    • 2021-11-15
    • 1970-01-01
    • 2022-01-16
    • 2020-09-09
    • 2021-05-26
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多