Pandas DataFrame 内の複数のリスト列を効率的にネスト解除する方法

Susan Sarandon
リリース: 2024-11-17 20:58:02
オリジナル
437 人が閲覧しました

How to Efficiently Unnest Multiple List Columns in a Pandas DataFrame?

パンダ データフレーム内の複数のリスト列を効率的にネスト解除 (分解) する方法

問題: 大規模なデータセット内のネストされたリスト列の分解

pandas DataFrame では、リストを含む列を複数の行に「ネスト解除」または「展開」する必要がある場合があります。ただし、これは、特に大規模なデータセットの場合、計算コストがかかる操作になる可能性があります。

解決策: pandas >= 1.3 を使用する

pandas バージョン 1.3 以降の場合、という組み込み関数があります。 DataFrame.explode を使用すると、複数の列のネストを同時に解除できます。この関数では、リストのすべての列が同じ長さである必要があります。使用するには:

df.explode(['B', 'C', 'D', 'E']).reset_index(drop=True)
ログイン後にコピー

パンダ用のソリューション < 1.3

パンダの古いバージョンの場合は、もう少し複雑なアプローチが必要です。

  1. DataFrame のインデックスを、展開しない列に設定します。
  2. 展開される各列に Series.explode を適用します。
  3. ネストされていない DataFrame を取得するためにインデックスをリセットします。
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート