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

Pandas DataFrame指定位置插入行并复制行内容后删除原行问题

实现行移动的正确方法

核心思路

不用numpy操作(会丢失列名),直接用Pandas的pd.concat()拆分拼接DataFrame,完成行的移动:将原索引3的行插入到索引2的位置,原索引2的行后移,通过拼接自动排除原索引3的行。

代码实现(默认数字索引场景)

假设你的DataFrame为df,默认索引是0,1,2,3,4,...:

# 提取要移动的行(原索引3),保持DataFrame格式
row_to_move = df.loc[[3]]
# 拆分并拼接:前2行 → 要移动的行 → 原索引2的行 → 后续行
new_df = pd.concat([
    df.iloc[:2],
    row_to_move,
    df.iloc[2:3],
    df.iloc[4:]
]).reset_index(drop=True)  # 重置索引避免重复,不需要可去掉该方法

自定义标签索引场景

如果你的DataFrame是自定义标签索引(比如['a','b','c','d','e']),要把标签'd'移到'c'前面:

row_to_move = df.loc[['d']]
new_df = pd.concat([
    df.loc[:'b'],  # 取到标签'b'的所有行
    row_to_move,
    df.loc['c':'c'],  # 原标签'c'的行
    df.loc['e':]  # 标签'e'及之后的行
])

为什么用numpy会出问题

numpy操作会把DataFrame转换成纯二维数组,丢失列名、索引等结构化信息,转回DataFrame时默认会用数字作为列名,所以必须用Pandas原生的拼接方法来保留数据结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58