pandas DataFrame では、リストを含む列を複数の行に「ネスト解除」または「展開」する必要がある場合があります。ただし、これは、特に大規模なデータセットの場合、計算コストがかかる操作になる可能性があります。
pandas バージョン 1.3 以降の場合、という組み込み関数があります。 DataFrame.explode を使用すると、複数の列のネストを同時に解除できます。この関数では、リストのすべての列が同じ長さである必要があります。使用するには:
df.explode(['B', 'C', 'D', 'E']).reset_index(drop=True)
パンダの古いバージョンの場合は、もう少し複雑なアプローチが必要です。
df.set_index(['A']).apply(pd.Series.explode).reset_index()
両方の方法set_index とexplode は DataFrame.explode よりわずかに高速で、効率的なソリューションを提供します。次の表はパフォーマンスの比較を示しています。
Method | Time (seconds) |
---|---|
DataFrame.explode | 0.00259 |
Set index and explode | 0.00127 |
Stacking approach | 0.120 |
この質問は当初重複としてマークされていましたが、特に大規模な問題を処理できる効率的な方法の必要性を強調しています。データセット。重複した質問に対する回答では、この要件に適切に対応できませんでした。
以上がPandas DataFrame 内の複数のリスト列を効率的にネスト解除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。