查找熊猫每个组中的值

时间:2019-07-15 08:08:48

标签: pandas

是否有一种汇总或转换大熊猫的方法,可以为我提供每个组中存在的值的列表。

例如,获取这些数据

+---------+-----------+
| 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?

1 个答案:

答案 0 :(得分:1)

get_dummiesmax一起用作指标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')