如何在Pandas的groupby操作中统计文本列的不同字符串数量?
解决Pandas分组后文本列统计不同字符串数量的问题
你可以用lambda 函数替代直接传入'nunique'字符串的方式,确保对文本列正确统计不同字符串的数量,同时保持对列'd'的求和逻辑不变:
df = df.groupby('a').agg( b=('b', lambda x: x.nunique()), c=('c', lambda x: x.nunique()), d=('d', 'sum') ).reset_index()
如果还是存在问题,大概率是文本列包含空值(如NaN、None)或混合数据类型,你可以先做数据清理:
- 统一列的数据类型为字符串:
df['b'] = df['b'].astype(str) - 过滤空值:
df = df.dropna(subset=['b', 'c'])
如果需要统计包含空值在内的所有不同值,可给nunique()添加dropna=False参数:
df = df.groupby('a').agg( b=('b', lambda x: x.nunique(dropna=False)), c=('c', lambda x: x.nunique(dropna=False)), d=('d', 'sum') ).reset_index()
内容的提问来源于stack exchange,提问作者Kishan
相关产品推荐
相关产品推荐

