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

如何解析合并列至DataFrame?实现行内国名分组转列

解决方案

假设你的原始DataFrame是类似这样的常见结构(无配图情况下的典型场景):

import pandas as pd

# 模拟导入后的原始数据
df = pd.DataFrame({
    '指标': ['GDP', 'GDP', '人口', '人口'],
    '国家': ['中国', '美国', '中国', '美国'],
    '数值': [18, 25, 14, 3.3]
})

用df.pivot()没得到预期结果,大概率是存在重复的行/列组合,或是参数设置不匹配。试试这两种更可靠的方法:

方法1:使用pivot_table()

自动处理重复值,适配绝大多数分组转列的场景:

# 指定行索引、列名、取值字段,aggfunc根据数据情况选聚合方式
df_target = df.pivot_table(
    index='指标', 
    columns='国家', 
    values='数值', 
    aggfunc='first'  # 无重复数据用first,有重复可换sum/mean
)

方法2:使用set_index() + unstack()

更灵活的索引操作方式,适合需要先整理索引的情况:

# 设置多级索引后,将国家维度转成列
df_target = df.set_index(['指标', '国家'])['数值'].unstack(level='国家')
# 若存在空值,按需填充
df_target = df_target.fillna(0)  # 或fillna('')填充为空字符串

处理后得到的目标DataFrame格式如下:

国家    中国   美国
指标            
GDP   18.0  25.0
人口   14.0   3.3

如果你的原始数据结构和假设不同(比如国名原本在同一行的多个字段中),可以补充具体数据样例,以上方法基本覆盖了行内分组转列的核心需求。

内容的提问来源于stack exchange,提问作者Luan Nguyen Thanh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:08