簡體   English   中英

將不同文件夾中的多個 csv 文件連接到 python 中的一個 csv 文件中

[英]Concatenate multiple csv files from different folders into one csv file in python

我正在嘗試將多個 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


    

如果沒有看到您的 CSV 文件,很難確定,但我之前遇到過這個問題,因為 CSV 格式異常。 CSV 解析器可能難以確定 CSV 文件、分隔符等的結構。

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

來自文檔:“C 引擎更快,而 python 引擎目前功能更完整。”

嘗試在讀取單個 CSV 文件時傳遞engine = 'python'參數,看看是否成功讀取。 這樣,您可以將問題縮小到文件讀取或遍歷文件。

嘗試簡化您的代碼:

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)

此解決方案應該對您有吸引力:

import pandas as pd
import pathlib

data_dir = '/Users/thomasbryan/projetos/blocklist/files/'
out_dir = '.'

list_files = []
for filename in pathlib.Path(data_dir).glob('**/*.csv'):
    list_files.append(filename)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM