1. ホーム
  2. python

[解決済み] PandasでデータフレームをGroupByし、カラムを保持する方法

2023-02-01 10:03:59

質問

このような書籍の利用状況を記録したデータフレームがあるとします。

Name   Type   ID
Book1  ebook  1
Book2  paper  2
Book3  paper  3
Book1  ebook  1
Book2  paper  2

他の列を維持したまま、全ての本のカウントを取得して、これを取得したい。

Name   Type   ID    Count
Book1  ebook  1     2
Book2  paper  2     2
Book3  paper  3     1

これはどうやったらできるのでしょうか?

ありがとうございます。

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

以下のようにしたい。

In [20]:
df.groupby(['Name','Type','ID']).count().reset_index()

Out[20]:
    Name   Type  ID  Count
0  Book1  ebook   1      2
1  Book2  paper   2      2
2  Book3  paper   3      1

あなたの場合、'Name', 'Type', 'ID' のコルは値が一致しているので、次のようになります。 groupby を呼び出し、その上で count で、次に reset_index .

別の方法として、'Count' カラムを追加するために transform を使って追加し、次に drop_duplicates :

In [25]:
df['Count'] = df.groupby(['Name'])['ID'].transform('count')
df.drop_duplicates()

Out[25]:
    Name   Type  ID  Count
0  Book1  ebook   1      2
1  Book2  paper   2      2
2  Book3  paper   3      1