如何将Pandas DataFrame转换为index、field、value结构的长表格式
Pandas宽表转长表实现方法
你需要执行的是宽表转长表操作,无需手动遍历,可通过以下两种内置方法实现:
方法1:使用stack方法(推荐)
stack会直接将列名转为二级索引,保留原始行索引,仅需两步即可得到目标结果:
# 构造示例DataFrame(你已有df可跳过这步) import pandas as pd df = pd.DataFrame( {'field_1': [123, 789, 131415], 'field_2': [456, 101112, 161718]}, index=[10, 20, 30] ) # 转换操作 res = df.stack().reset_index() # 重命名列符合目标格式 res.columns = ['index', 'field', 'value']
执行后res就是你要的目标格式。
方法2:使用melt方法
melt是更通用的长宽转换函数,需手动指定保留原始索引:
res = df.reset_index()\ .melt(id_vars='index', var_name='field', value_name='value')\ .sort_values('index')\ .reset_index(drop=True)
两种方法选择建议
- 仅当前场景转换选
stack,代码更简洁 - 若后续需要自定义保留/排除更多列,选
melt灵活度更高
内容的提问来源于stack exchange,提问作者Guilherme
相关产品推荐
相关产品推荐

