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

如何在保持原有索引的前提下为Pandas数据集添加新行

Pandas数据集添加行并保持连续索引

原数据集代码

import pandas as pd

data = [("Il nome della rosa","Umberto Eco", 1980), 
        ("L'amore che ti meriti","Daria Bignardi", 2014), 
        ("Memorie dal sottsuolo", " Fëdor Dostoevskij", 1864), 
        ("Oblomov", "Ivan Alexandrovich Goncharov ", 1859)]

index = range(1,5,1)
data = pd.DataFrame(data, columns = ["Books'Title", "Authors", "Publishing Year"], index = index)

pubhouses = ["Bompiani", "Mondadori", "Rizzoli", "Feltrinelli"]
data.insert(3, 'Publication House', pubhouses)

待添加的数据

newbook1 = ['Il demone meschino', 'Fëdor Sologub',  1907, 'Feltrinelli']
newbook2 = ['le anime morte', 'Nikolaj Vasilevič Gogol Janovskij',  1882, 'Garzanti']

原代码的问题

你写的data.loc[len(data.index[-1] + 1)] = [newbook1, newbook2]有两处错误:

  1. 语法错误:data.index[-1]是当前数据集最后一个索引值(比如4),直接加1就是下一个索引,不需要用len()函数包裹,len()是用来计算序列长度的,这里完全用错场景。
  2. 维度不匹配:试图一次性给loc传入两个列表,这会导致Pandas无法识别,因为loc一次赋值一行需要对应一个列表,而非嵌套列表。

修复后的方案

方案一:用pd.concat合并(推荐,适合批量添加行)

先把新数据构造成和原数据集结构一致的DataFrame,再合并:

# 构造新数据的DataFrame,指定列名和连续索引
new_df = pd.DataFrame(
    [newbook1, newbook2],
    columns=data.columns,
    index=[data.index[-1]+1, data.index[-1]+2]
)

# 合并原数据集和新数据
data = pd.concat([data, new_df])

方案二:逐行添加(适合少量行)

直接通过loc指定新索引,逐行赋值:

# 添加第一行
data.loc[data.index[-1] + 1] = newbook1
# 添加第二行,此时最后一个索引已经变成5,加1就是6
data.loc[data.index[-1] + 1] = newbook2

运行任意一种方案后,数据集的索引会从1连续到6,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:33:59