首頁 > 後端開發 > Python教學 > 如何有效地將多個 CSV 檔案連接到單一 Pandas DataFrame 並追蹤資料來源?

如何有效地將多個 CSV 檔案連接到單一 Pandas DataFrame 並追蹤資料來源?

Linda Hamilton
發布: 2024-12-22 21:33:18
原創
681 人瀏覽過

How Can I Efficiently Concatenate Multiple CSV Files into a Single Pandas DataFrame and Track Data Provenance?

將多個CSV 檔案連接到一個DataFrame

問題陳述

將多個CSV 檔案有效地組合成一個統一的DataFrame,一個簡潔可靠的解決方案被尋求。但是,在串聯循環中遇到了障礙。

解決方案

要解決該問題並成功串聯CSV 文件,可以使用以下綜合代碼片段:

import os
import pandas as pd
from pathlib import Path

path = r'C:\DRO\DCL_rawdata_files'
all_files = Path(path).glob('*.csv')

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
登入後複製

此程式碼利用生成器表達式單獨讀取每個CSV 文件,然後將它們連接到單一DataFrame 中。 ignore_index 參數確保串聯的 DataFrame 具有連續的行索引。

新增資訊以識別資料來源

在某些情況下,向串聯的 DataFrame 新增一列來指示來源可能會有所幫助每行的檔案。這可以使用以下方法之一來實現:

選項 1:新增檔案名稱作為新欄位

dfs = []
for f in all_files:
    data = pd.read_csv(f)
    data['file'] = f.stem
    dfs.append(data)

df = pd.concat(dfs, ignore_index=True)
登入後複製

選項2:新增通用檔案來源為新欄位

dfs = []
for i, f in enumerate(all_files):
    data = pd.read_csv(f)
    data['file'] = f'File {i}'
    dfs.append(data)

df = pd.concat(dfs, ignore_index=True)
登入後複製

選項3:使用清單理解新增檔案來源

dfs = [pd.read_csv(f) for f in all_files]
df = pd.concat(dfs, ignore_index=True)
df['Source'] = np.repeat([f'S{i}' for i in range(len(dfs))], [len(df) for df in dfs])
登入後複製

選項44 :使用.assign()的單行解決方案

df = pd.concat((pd.read_csv(f).assign(filename=f.stem) for f in all_files), ignore_index=True)
登入後複製

透過實作一個在這些選項中,連接的 DataFrame 將使用資訊進行註解以追蹤每行的來源。

以上是如何有效地將多個 CSV 檔案連接到單一 Pandas DataFrame 並追蹤資料來源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板