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

如何将Pandas DataFrame按国家分组统计买卖值并转换为目标格式

实现方案

你可以直接使用Pandas的pivot_table方法完成结构转换,同时完成分组聚合和行列重塑,完整可运行代码如下:
首先导入依赖包、构造原始数据集:

import pandas as pd
from decimal import Decimal

# 构造原始数据并指定列名
a = [('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('usa', 'Balaji B',Decimal('48998'), Decimal('41843')),('usa', 'Balaji B',Decimal('48998'), Decimal('41843'))]
df = pd.DataFrame(a, columns=['国家', '用户名', 'sell', 'buy'])

执行结构转换:

# 按用户名聚合不同国家的sell、buy值,生成目标结构
res_df = df.pivot_table(
    index='用户名', # 保留用户名作为行维度
    columns='国家', # 国家作为列维度
    values=['sell', 'buy'], # 要聚合的指标列
    aggfunc='sum' # 聚合规则,可按需替换为mean、count等
)
# 合并多级列名为「国家_指标」格式
res_df.columns = [f'{col[1]}_{col[0]}' for col in res_df.columns]
# 重置索引,将用户名恢复为普通列
res_df = res_df.reset_index()

如果不需要保留用户名列作为行维度,直接调整index参数为index=None即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:54:03