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

Pandas如何实现DataFrame列转行转置得到Scores与Values对应表

问题原因

你的两种实现逻辑都没匹配原DataFrame的结构特征:原表前两列是标识列,从Min_4到Max_4的每一列,对应目标结果里的一行,其中第一行(Variable=Scores)存的是目标表Scores列的值,第二行(Params=MAP)存的是目标表Values列的值。

  • 直接用melt()的错误:你把Variable、Params作为固定列融表后,分数值和MAP生理值会被堆到同一个值列里,没法拆成目标要求的两列结构。
  • 转置方法出object类型的错误:你把所有数值列设为索引再转置,pandas需要兼容列里的混合值(分数、MAP值、NaN),会自动把类型降级为object,后续切片的索引逻辑也不对,切不到正确的数值范围。
正确实现

直接提取对应行的数值拼接成新表即可,不会出现类型异常,代码最简单:

# 提取所有存储数值的列(从第三列开始到末尾)
num_cols = df_MAP.columns[2:]

# 分别提取分数序列、MAP值序列,拼接为新DataFrame
df_result = pd.DataFrame({
    "Scores": df_MAP[df_MAP["Variable"] == "Scores"][num_cols].iloc[0].values,
    "Values": df_MAP[df_MAP["Params"] == "MAP"][num_cols].iloc[0].values
})

执行后得到的结果和目标结构完全一致,两列均为数值类型,不会出现object类型问题:

Scores  Values
0     4.0   160.0
1     3.0   130.0
2     2.0   110.0
3     1.0     NaN
4     0.0    70.0
5     1.0     NaN
6     2.0    50.0
7     3.0     NaN
8     4.0    49.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:48:21