You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无数据损失合并多个pandas的value_counts统计结果?

合并多个pandas value_counts统计结果的正确方法

直接对多个value_counts结果执行加法运算时,pandas会严格对齐索引,仅在单个Series中存在的元素会因为索引缺失被填充为NaN,导致统计错误。可以用以下两种方法正确合并:

方法一:使用add()方法并填充缺失值

利用Series.add()的fill_value参数,将缺失的索引位置默认值设为0后再相加,最后转回整数类型并排序即可:

import pandas as pd

a = pd.Series([1,2,2,None], dtype=object)
b = pd.Series([3,2,2,None], dtype=object)

vc_a = a.value_counts(dropna=False)
vc_b = b.value_counts(dropna=False)

# 合并统计结果
combined_vc = vc_a.add(vc_b, fill_value=0)
# 转换为整数类型(add后默认是float)
combined_vc = combined_vc.astype(int)
# 按统计量降序排序,和concat后的结果一致
combined_vc = combined_vc.sort_values(ascending=False)

执行后得到的结果:

2       4
None    2
1       1
3       1
Name: count, dtype: int64

方法二:批量合并后分组求和

如果有多个统计Series(比如vc_a、vc_b、vc_c...),可以把它们放入列表,用pd.concat合并后按索引分组求和:

vc_list = [vc_a, vc_b]
combined_vc = pd.concat(vc_list).groupby(level=0).sum().sort_values(ascending=False).astype(int)

这两种方法都能完美解决单个Series元素统计值变为NaN的问题,得到和直接拼接原Series后统计一致的结果。

内容的提问来源于stack exchange,提问作者sds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:58:18