Pandas按列分组如何统计列唯一值数量并生成唯一值分隔列表
你可以在groupby的agg聚合方法中同时定义两个聚合规则,一次计算得到两个目标字段,不需要分开两次分组处理,实现代码如下:
import pandas as pd companies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google', 'Microsoft', 'Google'] products = ['OS', 'Search', 'E-comm', 'X-box', 'Social Media', 'Android', 'OS', 'Search'] df = pd.DataFrame({'company' : companies, 'product':products }) # 单次分组聚合实现需求 result = df.groupby('company', as_index=False)['product'].agg( product = lambda x: list(x.unique()), # 生成分组唯一值列表 count = lambda x: x.nunique() # 统计分组唯一值数量 ) print(result)
运行上述代码就能直接得到你期望的输出结果。
如果你需要product字段为逗号分隔的字符串而非列表,只需要修改对应的聚合逻辑即可:
result = df.groupby('company', as_index=False)['product'].agg( product = lambda x: ', '.join(x.unique()), count = lambda x: x.nunique() )
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

