如何在Pandas中转置指定列并与现有键列合并?
需求可行性及实现方法
完全可行,用Pandas的melt()函数就能轻松实现宽表转长表的需求,具体操作如下:
示例代码
- 先构造模拟的原始DataFrame:
import pandas as pd # 原始数据示例 df = pd.DataFrame({ 'type': ['A', 'A', 'B'], 'product': ['P1', 'P2', 'P3'], 'a1': [10, 20, 30], 'a2': [15, 25, 35], 'a3': [12, 22, 32], 'a4': [18, 28, 38] })
- 使用
melt()完成转换:
# 执行转置转换 result_df = df.melt( id_vars=['type', 'product'], # 指定保留的键列 var_name='a index', # 对应原a1/a2等列名的新列名 value_name='a value' # 对应原a1/a2等列数值的新列名 )
转换结果说明
转换后的result_df完全符合需求:包含type、product、a index、a value四列,原始数据中每一行的a1至a4列会被拆分为多行,每行对应一组键列与单个a列的键值对。
比如原始第一行type=A, product=P1会被拆成4行,分别对应a1=10、a2=15、a3=12、a4=18。
内容的提问来源于stack exchange,提问作者user1911091
相关产品推荐
相关产品推荐

