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

在R语言中如何将重复行转为同一键值下的附加列?

将同一键值的重复行转为附加列(以汽车名称为例)

示例输入数据

假设你的原始DataFrame结构如下:

import pandas as pd

df = pd.DataFrame({
    '汽车名称': ['特斯拉Model 3', '特斯拉Model 3', '丰田卡罗拉', '丰田卡罗拉', '丰田卡罗拉'],
    '属性': ['续航', '加速', '油耗', '空间', '可靠性'],
    '数值': ['550km', '3.3s', '4.2L/100km', '4.8m³', '5星']
})

解决方案

通过分组编号+透视的方式,将同一汽车名称对应的多行转为同一行的附加列:

# 1. 为每个汽车的重复行分配序号,区分同组内的不同行
df['行序号'] = df.groupby('汽车名称').cumcount() + 1

# 2. 透视转换,把同组的行转为横向列
pivoted_df = df.pivot(index='汽车名称', columns='行序号')

# 3. 扁平化多层列名,让结果更易读
pivoted_df.columns = [f'{col[0]}_{col[1]}' for col in pivoted_df.columns]

# 4. 重置索引,将汽车名称从索引转回普通列
final_df = pivoted_df.reset_index()

输出效果

执行后得到的final_df结构如下:

汽车名称属性_1数值_1属性_2数值_2属性_3数值_3
特斯拉Model 3续航550km加速3.3sNaNNaN
丰田卡罗拉油耗4.2L/100km空间4.8m³可靠性5星

逻辑说明

  • cumcount():为每个分组(汽车名称)内的行生成从0开始的序号,+1后让序号从1开始,更符合日常习惯。
  • pivot():以汽车名称为索引,行序号为列,将原表的列转为多层列结构。
  • 列名扁平化:把多层列(如('属性', 1))转为属性_1的格式,避免多层列带来的操作不便。

这个方法适用于任意数量的列和任意重复次数的分组,能完美实现你需要的“将重复行转为附加列”的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:35:20