![](/img/trans.png)
[英]Python pandas: How to group by and count unique values based on multiple columns?
[英]Aggregate unique values of a column based on group by multiple columns and count unique - pandas
ID col1 col2 col3
I1 1 0 1
I2 1 0 1
I3 0 1 0
I4 0 1 0
I5 0 0 1
這是我的 dataframe。 我期待根據 col1、col2、col3 的 group by 聚合 ID 值,並且還想要一個計數列。
預期 output:
ID_List Count
[I1,I2] 2
[I3,I4] 2
[I5] 1
我的代碼
cols_to_group = ['col1','col2','col3']
data = pd.DataFrame(df.groupby(cols_to_group)['id'].nunique()).reset_index(drop=True)
data.head()
ID
0 2
1 2
2 1
你可以做一個groupby.agg()
:
df.groupby(['col1','col2','col3'], sort=False).ID.agg([list,'count'])
Output:
list count
col1 col2 col3
1 0 1 [I1, I2] 2
0 1 0 [I3, I4] 2
0 1 [I5] 1
您需要通過 sum、count 等來聚合 function。在這種情況下,count。 試試下面的代碼。
df.groupby(['col1','col2','col3']).ID.agg([list,'count']).reset_index(drop=True)
Output:
list count
0 [I1, I2] 2
1 [I3, I4] 2
2 [I5] 1
這里是 go:
grouped = df.groupby(['col1', 'col2', 'col3'], sort=False).ID
df = pd.DataFrame({
'ID_List': grouped.aggregate(list),
'Count': grouped.count()
}).reset_index(drop=True)
print(df)
Output:
ID_List Count
0 [I1, I2] 2
1 [I3, I4] 2
2 [I5] 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.