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

如何将DataFrame列值转为列标题并保留重复行?

解决方案

步骤说明

你的数据存在重复的Index+Column B组合,普通pivot无法处理重复索引,需要先添加辅助序号区分重复行,再完成数据重塑:

代码实现

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Index': [1, 3, 3, 3, 3],
    'Column B': ['type1', 'type1', 'type2', 'type2', 'type1'],
    'Column C': ['name1', 'name2', 'name3', 'name3', 'name2'],
    'Column D': ['true', 'false', 'false', 'false', 'false']
})

# 给每个(Index, Column B)分组添加序号,解决重复行冲突
df['seq'] = df.groupby(['Index', 'Column B']).cumcount()

# 重塑数据:将Column B的类型转为列,值取Column C
pivoted = df.pivot(index=['Index', 'seq'], columns='Column B', values='Column C').reset_index()

# 合并Column D(同一组内Column D值一致,取第一个即可)
col_d = df.groupby(['Index', 'seq'])['Column D'].first().reset_index()
result = pivoted.merge(col_d, on=['Index', 'seq'])

# 调整列顺序并移除辅助列seq
result = result[['type1', 'type2', 'Column D', 'Index']]

print(result)

输出结果

type1  type2 Column D  Index
0  name1    NaN     true      1
1  name2  name3    false      3
2  name2  name3    false      3

内容的提问来源于stack exchange,提问作者letícia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:55:26