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

Pandas如何按指定行数扩展行数据?是否适用explode方法?

高效实现DataFrame按指定行数展开的方法

嘿,你完全不用手动写循环来做这个!Pandas里有好几款向量化的高效方法,能帮你快速完成这种“按num_steps拆分行”的需求,而且性能比循环好太多,尤其是数据量大的时候。

先给你看最直观的方法——用explode(你怀疑的这个术语其实完全适用哦),步骤很简单:

  1. 先把num_steps列转换成从0到num_steps-1的列表
  2. 用explode把列表拆成单独的行

代码示例:

import pandas as pd

# 你的原始数据
df = pd.DataFrame({
    'event_id': [1],
    'num_steps': [3],
    'avg_time': [5]
})

# 生成对应序列的列表
df['num_steps'] = df['num_steps'].apply(lambda x: list(range(x)))
# 展开列表为多行
result = df.explode('num_steps', ignore_index=True)

print(result)
# 输出:
#    event_id num_steps  avg_time
# 0         1         0         5
# 1         1         1         5
# 2         1         2         5

如果你的数据量特别大,还可以试试另一种更高效的方法——用repeat先重复行,再用cumcount生成序列:

# 按num_steps的值重复每行
df_repeated = df.loc[df.index.repeat(df['num_steps'])]
# 按event_id分组,生成从0开始的连续整数
df_repeated['num_steps'] = df_repeated.groupby('event_id').cumcount()
# 重置索引(可选,让结果更整洁)
result = df_repeated.reset_index(drop=True)

这两种方法都是Pandas的内置向量化操作,完全避开了Python循环的性能瓶颈,处理大规模数据时速度会快很多。

内容的提问来源于stack exchange,提问作者kevin.w.johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:32:52