ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame でリストのような列を効果的に展開する方法

Pandas DataFrame でリストのような列を効果的に展開する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-27 15:44:11894ブラウズ

How to Effectively Explode List-Like Columns in Pandas DataFrames?

リストのような列の展開: データフレーム展開のガイド

問題:

Pandas データフレームでは、一部のセルに複数の値のリストが含まれる場合があります。目標は、他の列の値を保持しながら、各リスト要素が個別の行を占めるようにデータフレームを変換することです。

解決策:

方法 1: repeat()

Pandas 0.25 より前では、repeat()メソッド 2:explode() (Pandas >= 0.25)

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {'trial_num': [1, 2, 3, 1, 2, 3],
     'subject': [1, 1, 1, 2, 2, 2],
     'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
    }
)

# Expand 'samples' column into separate rows using repeat()
df_exploded = df.assign(
    samples=df['samples'].str.join(',').str.split(',')
).explode('samples')

df_exploded = df_exploded.reset_index(drop=True)

# Add sample_num column to track list element order
df_exploded['sample_num'] = df_exploded.groupby('trial_num').cumcount()

Pandas 0.25 のリリースでは、リストの列を展開するためによく使用されていました。 .explode() メソッドはエレガントな解決策:

このメソッドは空のリストを自動的に処理し、NaN を保持して、包括的な変換を保証します。

df.explode('samples').reset_index(drop=True)
注:

繰り返しベースのメソッドは文字列の展開列を処理できますが、セパレータで分割する必要があります。まず。

explode() メソッドは、一度に 1 つの列を分解します。
  • 一意のインデックスを確立し、リスト要素の番号を付け直すために、分解されたデータフレームにはさらに処理が必要になる場合があります。

以上がPandas DataFrame でリストのような列を効果的に展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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