是否有一种汇总或转换大熊猫的方法,可以为我提供每个组中存在的值的列表。
例如,获取这些数据
+---------+-----------+
| user_id | module_id |
+---------+-----------+
| 1 | A |
| 1 | B |
| 1 | C |
| 2 | A |
| 2 | B |
| 2 | D |
| 3 | B |
| 3 | C |
| 3 | D |
| 3 | E |
+---------+-----------+
我该如何完成此代码
df.groupby('user_id')
要给出结果C,这是每个组中唯一的module_id?
答案 0 :(得分:1)
将get_dummies
与max
一起用作指标DataFrame
,然后仅过滤1
列-1
的值类似于{ {3}}:
True
类似的解决方案:
cols = (pd.get_dummies(df.set_index('user_id')['module_id'])
.max(level=0)
.loc[:, lambda x: x.all()].columns)
print (cols)
Index(['B'], dtype='object')
df1 = pd.get_dummies(df.set_index('user_id')['module_id']).max(level=0)
print (df1)
A B C D E
user_id
1 1 1 1 0 0
2 1 1 0 1 0
3 0 1 1 1 1
更多解决方案:
cols = df1.columns[df1.all()]
cols = df.groupby(['module_id', 'user_id']).size().unstack().dropna().index
print (cols)
Index(['B'], dtype='object', name='module_id')