You need to enable JavaScript to run this app. 如何使用Pandas转置两列DataFrame 使原name列值转为新列?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas转置两列DataFrame 使原name列值转为新列?

Pandas 两列键值结构DataFrame转目标单行宽表实现

针对「name、value两列的原始窄表,将name列值转成新列名、对应value值填充为单行数据、忽略原有索引」的需求,以下为可直接运行的实现方案:

方法1:pivot 原生透视(最匹配场景逻辑)

  • 核心逻辑为直接用name列的值作为新表列名,value列作为单元格填充值,单值键值场景下无需额外聚合操作
  • 可直接复用的代码:
import pandas as pd
# 对照原始数据构造示例df
raw_df = pd.DataFrame({
    "name": ["name", "address", "city"],
    "value": ["florida", "parkway", "Tampa"]
})

# 核心转换步骤
target_df = raw_df.pivot(
    columns="name",
    values="value"
).reset_index(drop=True)
  • 转换后结果完全符合要求:列名依次为name、address、city,仅1行有效数据,原有索引被完全丢弃。

方法2:字典映射构造(轻量化实现)

  • 对于这类行数少、最终只需要单行的场景,直接把两列映射为字典传入DataFrame构造器,比透视方法更简洁
  • 可直接复用的代码:
target_df = pd.DataFrame(
    [dict(zip(raw_df["name"], raw_df["value"]))]
)
  • 该方法生成的结果天生为单行结构,列顺序与原始name列的取值顺序完全一致,无需额外处理索引。

方法3:set_index + unstack 实现(兼容扩展场景)

  • 该方法可兼容原始数据存在同名字段多值的场景,当前单值需求下也可直接使用
  • 可直接复用的代码:
target_df = (
    raw_df
    .set_index("name")["value"]
    .unstack()
    .to_frame()
    .T
    .reset_index(drop=True)
)

补充说明:之前查阅的转置、透视类教程未找到适配方案的核心原因:多数同类示例面向多行长表的透视场景,没有提及单值键值对转单行时,只要在pivot后追加reset_index(drop=True)即可直接压平为单行结构,不需要额外做行列转置操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 05:45:08