ホームページ >バックエンド開発 >Python チュートリアル >複数の CSV ファイルを単一の Pandas DataFrame に効率的に連結し、データの出所を追跡するにはどうすればよいですか?

複数の CSV ファイルを単一の Pandas DataFrame に効率的に連結し、データの出所を追跡するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-22 21:33:18719ブラウズ

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

複数の CSV ファイルを単一の DataFrame に連結する

問題ステートメント

複数の CSV ファイルを効率的に統合して 1 つの 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 ファイルを個別に読み取り、それらを 1 つの 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])

オプション 4: .assign を使用した単一行ソリューション()

df = pd.concat((pd.read_csv(f).assign(filename=f.stem) for f in all_files), ignore_index=True)

実装することでこれらのオプションの 1 つでは、連結された DataFrame に各行の起源を追跡するための情報が注釈として付けられます。

以上が複数の CSV ファイルを単一の Pandas DataFrame に効率的に連結し、データの出所を追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。