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

Python实现DataFrame按productID去重 转置Key为列填充Status值

你这个需求属于典型的长表转宽表场景,直接用Pandas内置的pivot透视方法即可实现,完整实现代码如下:

import pandas as pd

# ----------------------
# 如果你是从文件读取原始数据,替换下面的样例数据构造代码即可
# 例如 df = pd.read_excel("你的文件路径.xlsx") 或者 df = pd.read_csv("你的文件路径.csv")
# ----------------------
# 构造样例原始数据(仅测试用)
data = {
    'productID': [123, 123, 123, 123, 124, 124, 124],
    'Key': ['AB', 'BC', 'CD', 'DE', 'AB', 'DE', 'FG'],
    'Status': ['Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes']
}
df = pd.DataFrame(data)

# 执行转换逻辑
wide_df = df.pivot(
    index='productID', 
    columns='Key', 
    values='Status'
).reset_index()

# 空值替换为空字符串,调整列名匹配目标格式
wide_df = wide_df.fillna('').rename(columns={'productID': 'ProductID'})

# 输出结果验证
print(wide_df)

代码逻辑说明

  • pivot方法指定productID作为行维度,Key列的唯一值作为新的列名,Status的值填充对应单元格
  • fillna('')将无匹配的空缺位置替换为空字符串,符合你要求的空缺留空效果
  • reset_index()将行索引的productID转回普通表格列,rename方法用于匹配目标格式首字母大写的ProductID列名,如果你不需要调整列名可以去掉这部分逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:45:01