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

如何用Pandas聚合生成含总用户数及各语言用户数的统计表格?

Pandas 聚合统计问题

原始数据

原始DataFrame定义:

import pandas as pd
d = pd.DataFrame({
    'country': ['France', 'France', 'Germany', 'Germany', 'France', 'Spain', 'Germany'],
    'user': [1, 2, 3, 4, 5, 6, 7],
    'age': [20, 32, 19, 28, 22, 36, 23],
    'language': ['Python', 'C', 'Python', 'Python', 'Python', 'Go', 'Go'],
})

数据预览:

country  user  age language
0   France     1   20    Python
1   France     2   32        C
2  Germany     3   19    Python
3  Germany     4   28    Python
4   France     5   22    Python
5    Spain     6   36       Go
6  Germany     7   23       Go

期望结果

需要生成如下统计表格:

TotalUser  Python  C  Go
France           3       2  1  1
Germany          3       2  0  1
Spain            1       0  0  1

问题

是否无需两次分组聚合即可直接生成目标格式的数据?若不能,如何将已实现的两个分组结果合并为目标格式?


回答

方法一:一次聚合直接生成目标格式

完全可以通过一次操作生成目标结果,推荐使用pivot_table或pd.crosstab,两种方式都能一步到位:

1. 使用pivot_table

result = d.pivot_table(
    index='country',
    columns='language',
    values='user',
    aggfunc='count',
    fill_value=0
).reset_index()
# 添加总用户数列
result['TotalUser'] = result[['Python', 'C', 'Go']].sum(axis=1)
# 调整列顺序并设置索引
result = result[['country', 'TotalUser', 'Python', 'C', 'Go']].set_index('country')

输出结果与期望一致。

2. 使用pd.crosstab

# 统计各语言用户数
lang_counts = pd.crosstab(d['country'], d['language'], dropna=False).fillna(0)
# 添加总用户数列
lang_counts['TotalUser'] = lang_counts.sum(axis=1)
# 调整列顺序
lang_counts = lang_counts[['TotalUser', 'Python', 'C', 'Go']]

输出结果同样符合要求。

方法二:合并已有的两个分组结果

如果一定要基于你已得到的两个分组结果合并,可按以下步骤操作:

假设你已生成两个结果:

# 总用户数统计结果
total_df = d.groupby(['country']).size().reset_index(name='TotalUser')
# 按国家+语言分组的统计结果(转换为宽表)
lang_df = d[['country', 'language']].groupby(['country', 'language']).size().unstack(fill_value=0).reset_index()

合并并整理格式:

# 合并两个DataFrame
merged = pd.merge(total_df, lang_df, on='country', how='left').fillna(0)
# 设置country为索引并调整列顺序
merged = merged.set_index('country')[['TotalUser', 'Python', 'C', 'Go']]

最终得到的结果与期望完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:46:04