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

Python如何将单列键值对DataFrame pivot为多列结构化数据表

解决方案

错误原因

你原有代码的问题如下:

  • df.header.str.split(': ')[0]语法错误,该写法会提取第一行的拆分结果,而非每行拆分后的第一个元素,正确写法为.str[0]
  • pivot_table调用格式不符合要求,同时传入df作为参数又在列、值参数中引用df列,逻辑冲突
  • 未给同属一行的键值对打分组标记,透视逻辑无法判断哪些键值对需要合并为同一行

完整实现代码

import pandas as pd
import numpy as np

# 1. 将原单列拆分为键、值两列,n=1保证值里的冒号不会被误拆分
df[['key', 'value']] = df['header'].str.split(': ', n=1, expand=True)

# 2. 给同属一行的属性打分组标记:遇到view或dimension时表示新行开始,分组号累加
df['group_id'] = df['key'].isin(['view', 'dimension']).cumsum()

# 3. 透视转换为多列宽表
result = df.pivot(index='group_id', columns='key', values='value').reset_index(drop=True)

# 4. 可选:和你示例输出对齐,仅第一行保留view值,其余行view置空
result['view'] = np.where(result.index == 0, result['view'].dropna().iloc[0], np.nan)

效果说明

运行后result的结构与你期望的输出完全一致,会自动保留所有存在的键对应的列,不存在的键对应值自动填充为NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:48:03