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

如何在Pandas中复制指定索引的单行并插入到下一位?

复制DataFrame指定索引行并插入到下一行的简洁方法

需求说明

需要复制DataFrame中索引为x的单行,原样插入到索引x+1的位置。例如:

原数据框df:

a  b
0 3  8
1 2  4
2 9  0
3 5  1

复制索引2的行后插入到下一行,期望结果:

a  b
0 3  8
1 2  4
2 9  0
3 9  0 # new row
4 5  1

问题分析

你之前尝试用concat但效果混乱,核心原因是手动构造了列名不匹配的新DataFrame(date、event),和原数据框的列(a、b)不一致,导致拼接后结构混乱。

简洁解决方案

直接提取目标行并保持原列结构,再通过concat拼接即可:

import pandas as pd

# 示例数据
df = pd.DataFrame({'a': [3, 2, 9, 5], 'b': [8, 4, 0, 1]})
x = 2  # 要复制的行索引

# 提取目标行(双层方括号保持DataFrame格式,避免维度错误)
copied_row = df.iloc[[x]]
# 拼接三部分:原数据前x+1行、复制的行、原数据剩余行
new_df = pd.concat([df.iloc[:x+1], copied_row, df.iloc[x+1:]]).reset_index(drop=True)

print(new_df)

如果你的索引是标签索引(而非默认的位置索引),则把iloc换成loc即可:

copied_row = df.loc[[x]]
new_df = pd.concat([df.loc[:x], copied_row, df.loc[x+1:]]).reset_index(drop=True)

关键说明

  • 用df.iloc[[x]](双层方括号)获取行,返回的是DataFrame对象,和原数据结构完全一致,拼接时不会出错;如果用单层方括号df.iloc[x]会返回Series,需要额外处理格式。
  • 最后调用reset_index(drop=True)是为了重置索引,避免出现重复索引的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:35:29