如何解析合并列至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
相关产品推荐
相关产品推荐

