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

在R中如何根据Trip列的值扩展对应数量的数据行?

如何根据DataFrame中Trip列的数值扩展行(保留所有列)

需求:将DataFrame的每行根据Trip列的数值拆分成对应数量的行,拆分后的Trip值依次为1到原Trip值,且保留数据框中所有其他列(原数据包含15+列)。

示例数据

原数据框df1:

IdTrip
13
22
32
44

预期结果

扩展后的df1:

IdTrip
11
12
13
21
22
31
32
41
42
43
44

解决方案

方法一:使用assign + explode(简洁直观)

通过构造Trip值的列表,再拆分列表为多行,自动保留所有其他列:

import pandas as pd

# 假设df1是你的原始数据框
df_expanded = df1.assign(Trip=df1['Trip'].apply(lambda x: list(range(1, x+1)))).explode('Trip', ignore_index=True)
  • assign:将原Trip列替换为从1到原数值的整数列表
  • explode:把列表格式的Trip列拆分成多行,其他列自动重复对应次数
  • ignore_index=True:重置结果的索引,避免重复索引

方法二:使用repeat + 分组计数(大数据量更高效)

通过重复行再生成新的Trip值,适合处理大规模数据:

import pandas as pd

# 按Trip值重复每行
df_expanded = df1.loc[df1.index.repeat(df1['Trip'])].copy()
# 按原索引分组,生成从1开始的连续Trip值
df_expanded['Trip'] = df_expanded.groupby(level=0).cumcount() + 1
# 重置索引
df_expanded = df_expanded.reset_index(drop=True)
  • index.repeat:根据Trip值重复每行索引,实现行扩展
  • groupby(level=0).cumcount():按原行的索引分组,计数后加1得到1到原Trip值的序列
  • 该方法避免了构造列表,在数据量较大时性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:01:05