リストのような列の展開: データフレーム展開のガイド
問題:
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 サイトの他の関連記事を参照してください。