如何将DataFrame指定列转置为行并合并为cohort与value两列
解决方案
你需要的是宽表转长表的操作,直接用pandas的melt函数即可实现,代码示例如下:
首先构造测试用的原始DataFrame:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'metric': ['logins'], 'control': [4], 'test': [2], 'duration': ['short'] })
执行转换操作:
# melt转换 res = df.melt( id_vars=['metric', 'duration'], # 不需要转置、保留原值的列 value_vars=['control', 'test'], # 需要转置为多行的列 var_name='cohort', # 存储原列名的新列名称 value_name='value' # 存储原列数值的新列名称 )
如果需要调整列顺序和你示例的输出完全一致,可以再加一步列顺序调整:
res = res[['metric', 'cohort', 'value', 'duration']]
最终输出的结果和你预期的格式完全匹配。
内容的提问来源于stack exchange,提问作者bbk611
相关产品推荐
相关产品推荐

