如何在pandas中完成图示形式的数据合并操作
pandas数据格式转换实现方法
你要实现的是pandas中**宽表转长表(tidy格式)**的需求,对应有两种常用实现方式:
方法1:使用melt函数(最推荐,适配绝大多数场景)
假设你的原始数据示例结构如下:
| 地区 | 1月销售额 | 2月销售额 | 3月销售额 |
|---|---|---|---|
| 北京 | 12000 | 15000 | 13000 |
| 上海 | 18000 | 21000 | 19000 |
| 广州 | 9000 | 10000 | 11000 |
要转换为「地区、月份、销售额」的长表结构,代码如下:
import pandas as pd # 读取原始数据,可替换为read_csv等对应读取方法 df = pd.read_excel("你的原始数据路径.xlsx") # 执行转换 result = df.melt( id_vars=["地区"], # 不需要转换、保持固定的列 var_name="月份", # 原表头转换后对应的新字段名 value_name="销售额" # 原单元格数值转换后对应的新字段名 )
方法2:使用stack函数(适合多层列名场景)
如果原始数据是多层列头的结构,用stack实现更便捷:
# 先把不需要转换的列设为索引 df = df.set_index(["地区"]) # 堆叠列索引后重置索引,即可得到长表结构 result = df.stack().reset_index() # 按需重命名列 result.columns = ["地区", "月份", "销售额"]
结果验证
转换完成后可以执行print(result.head())查看前几行数据,确认是否符合预期格式。如果有多余列需要删除、或者字段名需要调整,可以直接调用drop、rename方法处理。
内容的提问来源于stack exchange,提问作者jumpincrane
相关产品推荐
相关产品推荐

