首页 > 解决方案 > 具有多个 groupby 的特定值的唯一列值的数值聚合

问题描述

  1. 考虑一个熊猫数据框

在此处输入图像描述

用户基于 r_no 在相同值上打开的唯一 cam_id 的数字聚合,输出应该类似于

在此处输入图像描述

建议(我试过 group by 似乎我增加了我有一百万行的复杂性)

df = pd.DataFrame()
df['r_no'] = [1,1,1,2,3,1,1,1,2]
df['user'] = ['sam','sam','sam','sam','peter','jack','jack','Kris','peter']
df['value'] = [76,76,7,8,8,2,29,2,8]
df['cam_id'] = ['ab','abc','ab','ab','ab','abcd','abcd','abcd','ab']
df

标签: python-3.xpandasdataframeetldata-analysis

解决方案


利用:

(df.merge(df[df['r_no.']==1].groupby(['r_no.','user','value'])['cam_id']
                            .nunique()
                           .rename('count_unique').reset_index(), 
         on=['r_no.','user','value'], how='left').fillna(0))

输出:

   r_no.   user  value cam_id  count_unique
0      1    sam     76     ab           2.0
1      1    sam     76    abc           2.0
2      1    sam      7     ab           1.0
3      2    sam      8     ab           0.0
4      2  peter      8     ab           0.0
5      1   jack      2   abcd           1.0
6      1   jack     29   abcd           1.0
7      1   kris      2   abcd           1.0
8      2  peter      8     ab           0.0

推荐阅读