Pandas groupby操作如何同时展示唯一值数量和唯一值本身?
实现方法
你不需要分开做两次groupby再合并,直接在一次聚合操作中指定多个规则即可,代码如下:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame([ ('a', 'aa'), ('b', 'aa'), ('c', 'bb'), ('d', 'bb'), ('e', 'cc'), ('f', 'cc'), ('h', 'cc') ], columns=['group', 'id']) # 单次groupby同时统计两个指标 res = df.groupby('id')['group'].agg( count='nunique', values='unique' ).reset_index() print(res)
输出结果完全符合你的预期:
id count values 0 aa 2 [a, b] 1 bb 2 [c, d] 2 cc 3 [e, f, h]
补充说明
如果你使用的pandas版本较低,不支持关键字参数自定义聚合列名,可以改用元组传参的写法:
res = df.groupby('id')['group'].agg([ ('count', 'nunique'), ('values', 'unique') ]).reset_index()
内容的提问来源于stack exchange,提问作者armin
相关产品推荐
相关产品推荐

