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

如何统计Pandas中多列组合(如城市与国家)的出现次数?

如何统计Pandas中多列组合(如城市与国家)的出现次数?

嗨,你的这个需求其实挺常见的,确实不用特意新增一列来做统计,Pandas有好几种更简洁的原生方法能直接实现,我给你详细说说:

方法一:用value_counts()直接统计

这个方法本来就是为统计唯一组合出现次数设计的,用法非常直接:

df = pd.DataFrame([('London', 'UK'), ('Paris', 'FR'), ('Paris', 'US'), ('London', 'UK')], columns=['city', 'country'])
count_df = df[['city', 'country']].value_counts().reset_index(name='n')

value_counts()会自动统计每一组(city, country)的出现次数,默认按次数降序排列;如果想保留原数据里的组合顺序,可以加上sort=False参数。最后用reset_index()把索引转为普通列,再通过name='n'指定计数列的名称,就能得到你想要的结果啦。

方法二:用groupby().size()统计分组大小

这个方法更贴合“统计分组行数”的需求,比count()更精准(count()会统计每列的非空值数量,而size()直接返回分组的元素总数):

count_df = df.groupby(['city', 'country']).size().reset_index(name='n')

分组之后调用size(),直接就能拿到每个组合的出现次数,再转成DataFrame并指定列名,代码简洁又高效,完全不需要额外创建辅助列。

你原来的方法虽然能跑通,但确实没必要多此一举加一列全1的字段,上面这两种都是Pandas原生支持的规范写法,用起来更顺手~

备注:内容来源于stack exchange,提问作者Bean Taxi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:29:05