【问题标题】:Concatenate multiple csv files from different folders into one csv file in python在python中将来自不同文件夹的多个csv文件连接成一个csv文件
【发布时间】:2022-01-19 23:14:49
【问题描述】:

我正在尝试将多个 csv 文件连接到一个文件中(大约 30 个文件)。所有 csv 文件都位于不同的文件夹中。

但是,我在将所有文件附加在一起时遇到了错误:OSError: Initializing from file failed

这是我的代码:

import pandas
import glob
 
path = 'xxx'
target_folders=['Apples', 'Oranges', 'Bananas','Raspberry','Strawberry', 'Blackberry','Gooseberry','Liche']
output ='yyy'
path_list = []
for idx in target_folders:
    lst_of_files = glob.glob(path + idx +'\\*.csv')
    latest_files = max(lst_of_files, key=os.path.getmtime)
    path_list.append(latest_files)
    df_list = [] 
    for file in path_list: 
        df = pd.read_csv(file) 
        df_list.append(df) 
    final_df = df.append(df for df in df_list) 
    combined_csv = pd.concat([pd.read_csv(f) for f in latest_files])

    combined_csv.to_csv(output + "combined_csv.csv", index=False)

    OSError                                   Traceback (most recent call last)
    <ipython-input-126-677d09511b64> in <module>
  1 df_list = []
  2 for file in latest_files:
  ----> 3     df = pd.read_csv(file)
  4     df_list.append(df)
  5 final_df = df.append(df for df in df_list)

    OSError: Initializing from file failed


    

【问题讨论】:

  • 哇。 1. 你运行的是什么操作系统? 2. 传递给read_csv 的路径是什么? 3. 你运行的是什么版本的 Python? 4. 你用的是什么版本的 Pandas?

标签: python pandas csv


【解决方案1】:

尽量简化你的代码:

import pandas as pd
import pathlib

data_dir = 'xxx'
out_dir = 'yyy'

data = []
for filename in pathlib.Path(data_dir).glob('**/*.csv'):
    df = pd.read_csv(filename)
    data.append(df)

df = pd.concat(df, ignore_index=True)
df.to_csv(pathlib.Path('out_dir') / 'combined_csv.csv', index=False)

【讨论】:

    【解决方案2】:

    如果没有看到您的 CSV 文件,很难确定,但我之前遇到过这个问题,因为 CSV 格式异常。 CSV 解析器可能难以确定 CSV 文件的结构、分隔符等。

    试试df = pd.read_csv(file, engine = 'python')

    来自docs:“C 引擎更快,而 python 引擎目前功能更完整。”

    尝试在读取单个 CSV 文件时传递 engine = 'python' 参数,看看是否成功读取。这样您就可以将问题缩小到文件读取或遍历文件。

    【讨论】:

    • 文件只有2列,第一列名为['Fruit'],第二列['Harvest'],不同文件夹中所有文件的标题相同,但它们都在不同的位置
    • 嗨卡米拉,我已经编辑了我的答案 - 试试上面的。在不查看文件的情况下很难缩小问题范围,但从您的错误来看,很可能是由于 CSV 解析造成的。
    猜你喜欢
    • 2021-08-17
    • 2019-08-26
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多