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

如何通过值列表指定索引,在DataFrame对应位置插入(-999,-999)新行

嘿,这个需求我刚好碰过类似的,给你分享两个好用的解决方法,都能完美实现你要的效果!

方法一:利用小数索引快速插入(推荐,简洁高效)

这个方法不需要循环,通过给新行设置「原索引+0.5」的小数索引,合并后排序就能自动把新行放到目标位置下方,非常适合批量插入场景:

import pandas as pd

# 假设你的原DataFrame名为df,这里模拟一个220行2列的示例
df = pd.DataFrame({'col1': range(220), 'col2': range(220)})

# 你的目标插入索引列表
insert_indices = [41, 84, 129, 174, 219, 45]

# 创建包含所有待插入行的DataFrame,索引设为原索引+0.5
new_rows = pd.DataFrame(
    [[-999, -999]] * len(insert_indices),
    index=[idx + 0.5 for idx in insert_indices],
    columns=df.columns
)

# 合并原数据与新行,按索引排序后重置索引
df_with_inserts = pd.concat([df, new_rows]).sort_index().reset_index(drop=True)

处理完成后,每个指定索引的下方都会准确出现(-999, -999)的新行,代码简洁又高效。

方法二:循环倒序插入(适合精细控制场景)

如果你需要对插入过程有更多自定义空间,可以用循环实现,但必须倒序遍历插入索引——先处理大索引,避免前面的插入操作导致后续索引位置偏移:

import pandas as pd

df = pd.DataFrame({'col1': range(220), 'col2': range(220)})
insert_indices = [41, 84, 129, 174, 219, 45]

# 对插入索引降序排序,从最大的索引开始处理
for idx in sorted(insert_indices, reverse=True):
    # 拆分原DataFrame,在目标索引的下一个位置插入新行
    df = pd.concat([
        df.iloc[:idx+1],
        pd.DataFrame([[-999, -999]], columns=df.columns),
        df.iloc[idx+1:]
    ]).reset_index(drop=True)

倒序处理的逻辑是:比如先处理索引219(最后一行),插入后不会影响其他位置;接着处理174时,前面的插入操作也不会改变它的位置,确保每一次插入都精准对应目标位置。

验证结果

你可以通过类似df_with_inserts.iloc[[41,42,45,46]]的代码查看插入效果,会看到索引41、45的下一行都是(-999, -999),完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:01:46