ホームページ >バックエンド開発 >Python チュートリアル >複数の CSV ファイルを単一の Pandas 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 サイトの他の関連記事を参照してください。