如何转置pandas指定列 保留唯一Year值实现长表转目标结构宽表
你需要的是长表转宽表操作,直接使用pandas内置的pivot方法即可实现需求,无需手动全量转置:
实现代码
# 基础用法,适用于同年同国家只有1条人口记录的场景 pivoted_df = data_df.pivot( index="Year", columns="Country", values="Population" ).reset_index()
参数说明
index="Year":指定用Year作为行维度,自动保留唯一的年份值columns="Country":将Country列的所有唯一值作为新的列名values="Population":指定新表格的单元格值来自Population列,年份和国家匹配不上的位置自动填充NaN- 末尾加
reset_index()是为了将Year从索引转为普通表格列,和你要求的输出格式对齐
特殊场景兼容
如果全量数据中存在同一年份同一国家有多条人口记录的情况,pivot会触发报错,此时可以改用pivot_table方法自行指定聚合规则:
# 示例为取同年同国家人口的均值,aggfunc可根据需求替换为sum、first等 pivoted_df = data_df.pivot_table( index="Year", columns="Country", values="Population", aggfunc="mean" ).reset_index()
运行以上代码得到的结果和你给出的预期示例完全一致。
内容的提问来源于stack exchange,提问作者Hummer
相关产品推荐
相关产品推荐

