Pandas で区切り文字を使用してグループ化された値を結合する
groupby 関数を使用して複数の値を持つデータをグループ化すると、一般的に次の問題が発生します。これらの値を区切り文字なしで連結します。これを解決するには、agg メソッドを利用できます。
次の DataFrame について考えます。
col | val -----|----- A | Cat A | Tiger B | Ball B | Bat
col 列に基づいてこれらの行をグループ化し、val 列の値を連結するには、次を使用します。次のコード:
import pandas as pd df = pd.DataFrame({'col': ['A', 'A', 'B', 'B'], 'val': ['Cat', 'Tiger', 'Ball', 'Bat']}) grouped = df.groupby('col')['val'].agg('-'.join)
このアプローチでは、目的の結果が得られます。 result:
col | val -----|----- A | Cat-Tiger B | Ball-Bat
ただし、apply メソッドが代替として使用される場合、以下に示すように、ハイフンでつながれた値が複数回発生する予期しない結果が生じる可能性があります。
df.groupby('col')['val'].apply(lambda x: '-'.join(x)) col | val -----|----- A | C-a-t-T-i-g-e-r B | B-a-l-l-B-a-t
この問題を回避するには、上記の例で示したように、代わりに agg メソッドを使用します。
さらに、グループ化インデックスまたは MultiIndex を次のように変換します。通常の列の場合は、reset_index メソッドを使用できます:
df1 = grouped.reset_index(name='new')
以上がPandas でグループ化された値を区切り文字を使用して効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。