[英]Pandas: how to do value counts within groups
我有以下 dataframe。 我想先按a
和b
分組。 在每個組中,我需要根據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.