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

如何将多行DataFrame转换为带ID前缀的单行多列格式?

Pandas实现多行DataFrame转单行多列(带ID前缀)

嘿,这个需求我刚好处理过,用Pandas的几个核心操作就能轻松搞定!先给你看完整的实现代码,再一步步拆解逻辑:

步骤1:定义原始DataFrame

首先我们先还原你给出的原始数据:

import pandas as pd

# 原始输入数据
df = pd.DataFrame({
    'ID': ['A', 'B', 'C'],
    'value': [134, 345, 131],
    'is_valid': [True, False, True]
})

步骤2:核心转换代码

这部分是实现需求的关键:

# 将ID设为行索引,再把行索引转成列的层级
transformed = df.set_index('ID').unstack()
# 合并多级列名,生成「ID_原列名」的格式
transformed.columns = [f'{id_col}_{orig_col}' for orig_col, id_col in transformed.columns]
# 重置索引得到单行结构
final_result = transformed.reset_index(drop=True)

代码逻辑解释

  • set_index('ID'):把ID列转为行索引,让每个ID对应一行的value和is_valid字段
  • unstack():将行索引(也就是各个ID)转成列的第二层级,此时DataFrame的列是多级结构(第一层是原列名,第二层是ID)
  • 列名重命名:遍历多级列名,把「ID」和「原列名」拼接成你需要的前缀格式(比如A_ID、B_value)
  • reset_index(drop=True):去掉默认的索引列,得到纯粹的1行9列结构

最终结果验证

输出final_result就会得到你期望的结构:

A_IDA_valueA_is_validB_IDB_valueB_is_validC_IDC_valueC_is_valid
A134TrueB345FalseC131True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:08:11