繁体   English   中英

Pandas - 按一列分组并聚合其他列以列出

[英]Pandas - Group by one column and aggregate other column to list

我有一个 dataframe 有多个用户条目。 这些用户也可以分配到多个 ID。

我想按用户分组,然后将这些 ID 的列表存储在另一列中,如下所示:

我想从这个 go :

df1 = pd.DataFrame({'USER': ['BOB','STEVE','PAUL','KEITH','STEVE','STEVE','BOB'],'ID':[1,2,3,4,5,6,7]})

在此处输入图像描述

对此。 仅当该用户附加到多个 ID 时才显示值

在此处输入图像描述

groupby + map

u = df1.groupby("USER")["ID"].agg(list)
df1["MULTI_IDS"] = df1["USER"].map(u[u.str.len().ge(2)])

USER      ID  MULTI_IDS
0    BOB   1     [1, 7]
1  STEVE   2  [2, 5, 6]
2   PAUL   3        NaN
3  KEITH   4        NaN
4  STEVE   5  [2, 5, 6]
5  STEVE   6  [2, 5, 6]
6    BOB   7     [1, 7]

不像以前的解决方案那样优雅,但更容易解释)

import numpy as np

df1['MULTI_IDS']=[df1.groupby("USER")["ID"].agg(list)[i] if len(df1.groupby("USER")["ID"].agg(list)[i] )>1 else np.nan for i in df1.USER]

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM