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

如何在pandas DataFrame中基于指定列的值创建多列新字段

pandas实现长表转指定宽表的方法

完整可运行代码

import pandas as pd

# 构造你给出的原始DataFrame
raw_df = pd.DataFrame({
    'Name': ['Joe', 'Joe', 'Alba', 'Alba', 'Alba', 'George'],
    'Subject': ['Maths', 'Physics', 'Physics', 'Biology', 'Chemistry', 'Linguistics']
})

# 1. 给每个Name分组下的Subject生成顺序编号,拼接成目标列名
raw_df['subject_col'] = 'Subject' + (raw_df.groupby('Name').cumcount() + 1).astype(str)

# 2. 透视转换为宽表,缺失值填充为'-',整理格式
result_df = raw_df.pivot(
    index='Name', 
    columns='subject_col', 
    values='Subject'
).fillna('-').reset_index().rename_axis(columns=None)

运行后result_df就是你需要的目标格式。

关键步骤说明

  • groupby('Name').cumcount():会按Name分组后,给组内每一行生成从0开始的自增序号,加1后刚好对应Subject1/2/3的后缀,科目顺序和原始数据中的顺序完全一致
  • pivot方法按Name做行索引,刚生成的列名字段做列索引,Subject作为值完成宽表转换
  • fillna('-')把所有缺失值替换为要求的'-',rename_axis(columns=None)用来去掉透视后自动生成的列索引名称,让输出格式更符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:18:03