ホームページ  >  記事  >  バックエンド開発  >  Pandas DataFrame でカンマ区切りのセルを複数の行に分割するにはどうすればよいですか?

Pandas DataFrame でカンマ区切りのセルを複数の行に分割するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 05:05:03568ブラウズ

How can I split a comma-separated cell into multiple rows in a Pandas DataFrame?

Pandas データフレームでセルを複数の行に分割

Pandas は、複数のカンマ区切り値を含むセルを分割する機能など、データ操作のための包括的なツールを提供します。複数の行に分割します。このガイドでは、pandas のバージョンに基づいた 2 つの異なるアプローチを使用してこれを実現する方法を検討します。

pandas >= 0.25

pandas バージョン 0.25 以降では、組み合わせを使用できます。 apply、str.split、Series.explode を使用して、目的の結果を達成します。コード スニペットは次のとおりです:

<code class="python">(df.set_index(['order_id', 'order_date'])
   .apply(lambda x: x.str.split(',').explode())
   .reset_index())                                                   </code>

説明:

  1. set_index(['order_id', 'order_date']): order_id 列と order_date 列を設定します。後続の操作中にそれらを保持するためのインデックスとして使用します。
  2. apply(lambda x: x.str.split(',').explode()): ラムダ関数を各行に適用します。セル値 (package と package_code) をカンマ区切りで分割し、結果のリストを複数の行に分解します。
  3. reset_index(): インデックスをリセットして、分解された値を別の行として含む新しい DataFrame を作成します。

pandas

pandas バージョン 0.24 以下の場合は、stack、unstack、str.split を含むより複雑なアプローチが必要です:

<code class="python">(df.set_index(['order_date', 'order_id'])
   .stack()
   .str.split(',', expand=True)
   .stack()
   .unstack(-2)
   .reset_index(-1, drop=True)
   .reset_index()
)</code>

説明:

  1. 前のアプローチと同様に、set_index はインデックスとして order_date と order_id を設定します。
  2. stack() は行を折りたたみ、行をスタックします。単一の列。
  3. str.split(',', Expand=True) は、カンマ区切り文字に基づいて、結合された値を複数の列に分割します。
  4. stack() は、列をスタックして単一の列を作成します。
  5. unstack(-2) は、最後から 2 番目のレベルで DataFrame のスタックを解除し、分割値を含む行を作成します。
  6. reset_index(-1,drop=True) は、余分なレベルを削除します
  7. reset_index() は、新しいインデックスを追加して新しい DataFrame を作成します。

どちらのメソッドも、次に示すように、分解された値を別個の行として含む新しい DataFrame を返します。あなたが提供した目的の出力。

以上がPandas DataFrame でカンマ区切りのセルを複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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