1. ホーム
  2. python

[解決済み] size()カラムに名前を割り当てるには?

2023-06-20 04:58:21

質問

私は .size() を使って、各グループにいくつのアイテムがあるかを数えています。

列名の配列を手動で編集することなく、結果を新しい列名に保存したいのですが、どのようにすればよいのでしょうか?

これは私が試したものです。

grpd = df.groupby(['A','B'])
grpd['size'] = grpd.size()
grpd

と表示され、出たエラーは

TypeError: 'DataFrameGroupBy' object does not support item assignment (2行目)

どのように解決するのですか?

の結果は df.groupby(...) の結果はDataFrameではありません。DataFrameに戻すには、各グループに関数を適用するか、グループの各要素を変換するか、グループをフィルタリングする必要があります。

(1)元のデータをすべて含むDataFrameを df と、(2) 各グループにどれだけのデータがあるかというカウントを含むDataFrameが欲しいようです。これらは長さが異なるので、同じDataFrameに入れる必要がある場合、サイズを冗長に、つまり各グループの各行ごとにリストする必要があります。

df['size'] = df.groupby(['A','B']).transform(np.size)

(余談:入力例と予想される結果を簡潔に示せると助かります)