簡體   English   中英

根據多列分組聚合列的唯一值並計算唯一值 - pandas

[英]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.

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