簡體   English   中英

Pandas:如何在組內進行值計數

[英]Pandas: how to do value counts within groups

我有以下 dataframe。 我想先按ab分組。 在每個組中,我需要根據c進行值計數,並且只選擇計數最多的一個。 如果計數最多的一組有多個 c 值,則選擇任意一個。

a    b    c
1    1    x
1    1    y
1    1    y
1    2    y
1    2    y
1    2    z
2    1    z
2    1    z
2    1    a
2    1    a

預期的結果是

a    b    c
1    1    y
1    2    y
2    1    z

正確的方法是什么? 如果我可以打印出每個組,並將 c 的值計數作為中間步驟排序,那就更好了。

將原始 dataframe 按['a', 'b']分組並獲得.max()應該可以工作

df.groupby(['a', 'b'])['c'].max()

您還可以匯總'count''max'

df.groupby(['a', 'b'])['c'].agg({'max': max, 'count': 'count'}).reset_index()

您正在尋找.value_counts()

df.groupby(['a', 'b'])['c'].value_counts()
a  b  c
1  1  y    2
      x    1
   2  y    2
      z    1
2  1  a    2
      z    2
Name: c, dtype: int64

嘗試:

df=df.groupby(["a", "b", "c"])["c"].count().sort_values(ascending=False).reset_index(name="dropme").drop_duplicates(subset=["a", "b"], keep="first").drop("dropme", axis=1)

輸出:

   a  b  c
0  2  1  z
2  1  2  y
3  1  1  y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM