ホームページ >バックエンド開発 >Python チュートリアル >入れ子になったリストを Pandas データフレーム内の個々の行に分解するにはどうすればよいですか?

入れ子になったリストを Pandas データフレーム内の個々の行に分解するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-12 03:10:02544ブラウズ

How to Explode Nested Lists into Individual Rows in a Pandas Dataframe?

Pandas データフレームでネストされたリストを個々の行に展開する

パンダによるデータ操作の領域では、データを再構築する必要が生じることがよくあります。ネストされたリストとして個々の行に保存されます。 「nearest_neighbors」列に値のリストが含まれるデータフレームを考えてみましょう。目的は、これらのリストを「展開」し、リスト内の値ごとに個別の行を作成することです。

Pandas 0.25 は、explode() メソッドによるリストの展開を簡略化します

パンダの場合バージョン 0.25 以降では、explode() メソッドの導入により、列内のリストの展開が大幅に簡素化されました。その機能を実証するために、サンプル データフレームを再作成してみましょう。

import pandas as pd

# Original DataFrame
df = pd.DataFrame({'name': ['A.J. Price'] * 3, 
                    'opponent': ['76ers', 'blazers', 'bobcats'], 
                    'nearest_neighbors': [['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']] * 3})

# Set the index for easier reference
df = df.set_index(['name', 'opponent'])

ネストされたリストの展開

explode() メソッドを使用すると、「最近傍」を分割できます。リスト要素ごとに列を作成し、値ごとに個別の行を作成します。

# Explode the list-like column
df_exploded = df.explode('nearest_neighbors')

展開後の出力

print(df_exploded)
                    nearest_neighbors
name       opponent                  
A.J. Price 76ers          Zach LaVine
           76ers           Jeremy Lin
           76ers        Nate Robinson
           76ers                Isaia
           blazers        Zach LaVine
           blazers         Jeremy Lin
           blazers      Nate Robinson
           blazers              Isaia
           bobcats        Zach LaVine
           bobcats         Jeremy Lin
           bobcats      Nate Robinson
           bobcats              Isaia

ご覧のとおり、各値は"nearest_neighbors" 列のリストのリストは、対応する相手インデックス内の別の行として表されるようになりました。

リスト展開のその他のメソッド

以前の pandas バージョンの場合0.25 では、列内のリストを展開する別のアプローチがありました。これらのメソッドでは、適用、ラムダ、リスト内包表記などの操作を組み合わせる必要がありました。ただし、explode() メソッドの導入により、これらのより複雑なアプローチは必要なくなりました。

以上が入れ子になったリストを Pandas データフレーム内の個々の行に分解するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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