如何实现Pandas DataFrame到指定透视结构的格式转换
实现代码
import pandas as pd # 示例数据构造 sample = {'Country' : ["US","US","US","UK","UK","UK"], "Indicator": ["Tax","Import","Export","Tax","Import","Export"], "2019":[1,2,3,4,5,6], "2020":[7,8,9,10,11,12], "2021":[13,14,15,16,17,18]} sample_df = pd.DataFrame(sample) # 核心转换逻辑 # 第一步:把年份列从宽格式转成长格式 melted_df = sample_df.melt(id_vars=["Country", "Indicator"], var_name="Date", value_name="Val") # 第二步:把Indicator维度从行转成列 target_df = melted_df.pivot(index=["Country", "Date"], columns="Indicator", values="Val").reset_index() # 清除列名的额外标识,和目标结构完全对齐 target_df.columns.name = None
逻辑说明
melt操作保留Country、Indicator两列不动,将散列的2019/2020/2021年份列收拢为统一的Date字段,对应数值存入Val字段pivot操作按Country、Date分组,把Indicator的不同取值(Tax/Import/Export)展开为独立列,对应位置填充匹配的数值- 最后重置索引、清除列名标识,输出结果和你要求的目标结构完全一致
内容的提问来源于stack exchange,提问作者weirdaxe
相关产品推荐
相关产品推荐

