You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pandas中关联成本与对应概率列并重塑DataFrame

Pandas DataFrame 格式转换解决方案

原始数据代码

import pandas as pd

df = pd.DataFrame({'cost_m1': [10, 11, 140], 'cost_m2': [130, 90, 110], 'cost_m3': [80, 110, 120],
                    'prob_m1': [0.1, 0.11, 0.25], 'prob_m2':[0.13, 0.19, 0.19], 'prob_m3':[0.21, 0.11, 0.14] })
df = df.reset_index()  # 确保索引与行数匹配

目标格式说明

需要将上述宽表转换为包含index、Model、Measure、Value四列的长表:

  • Model对应原列名中的m1/m2/m3
  • Measure对应原列名中的cost/prob
  • Value为对应列的数值

解决方案代码

# 转长表,保留index列
melted_df = df.melt(id_vars='index', var_name='combined', value_name='Value')

# 拆分合并的列名,得到Measure和Model
melted_df[['Measure', 'Model']] = melted_df['combined'].str.split('_', expand=True)

# 调整列顺序并排序,得到最终结果
result_df = melted_df[['index', 'Model', 'Measure', 'Value']].sort_values(by=['index', 'Model']).reset_index(drop=True)

# 查看结果
print(result_df)

输出示例

index Model Measure  Value
0      0    m1    cost   10.0
1      0    m1    prob    0.1
2      0    m2    cost  130.0
3      0    m2    prob    0.13
4      0    m3    cost   80.0
5      0    m3    prob    0.21
6      1    m1    cost   11.0
7      1    m1    prob    0.11
8      1    m2    cost   90.0
9      1    m2    prob    0.19
10     1    m3    cost  110.0
11     1    m3    prob    0.11
12     2    m1    cost  140.0
13     2    m1    prob    0.25
14     2    m2    cost  110.0
15     2    m2    prob    0.19
16     2    m3    cost  120.0
17     2    m3    prob    0.14

内容的提问来源于stack exchange,提问作者Venugopal Bukkala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:20:25