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

如何向已有Pandas DataFrame添加新数据?求concat外的替代方法

向已填充的DataFrame追加新列表数据的替代方法

场景说明

先创建空DataFrame并完成初始填充:

d = {'A': [], 'B': [], 'C': []}
dataframe = pd.DataFrame(data=d)

通过列赋值完成第一批数据填充:

dataframe['A'] = some_list_1a
dataframe['B'] = some_list_1b
dataframe['C'] = some_list_1c

填充后DataFrame结构:

A      B     C
----------------
val1  val1  val1
val1  val1  val1
val1  val1  val1

现在需要追加第二批列表数据,但直接用dataframe['A'] = some_list_2a无法生效,期望得到的结果:

A      B     C
----------------
val1  val1  val1
val1  val1  val1
val1  val1  val1
val2  val2  val2
val2  val1  val2
val2  val2  val2

(val1为第一批列表值,val2为第二批列表值)

已知可通过创建第二个DataFrame并使用concat实现,以下是其他替代方法:


方法1:使用loc逐行追加(适合小批量数据)

通过获取当前DataFrame的行数,扩展索引后直接赋值:

current_row_count = len(dataframe)
# 遍历新列表的每个元素,追加到末尾
for idx in range(len(some_list_2a)):
    dataframe.loc[current_row_count + idx] = [some_list_2a[idx], some_list_2b[idx], some_list_2c[idx]]

注意:数据量较大时,这种方法效率低于concat,因为每次loc赋值都会触发DataFrame的重新计算。

方法2:直接扩展列的底层列表(需注意数据类型限制)

如果DataFrame列的数据类型为object,可以直接调用列的extend方法追加新列表:

dataframe['A'].extend(some_list_2a)
dataframe['B'].extend(some_list_2b)
dataframe['C'].extend(some_list_2c)
# 若索引出现混乱,重置索引
dataframe = dataframe.reset_index(drop=True)

局限性:仅适用于列存储的是可扩展的序列类型,若列是数值型等非object类型,此方法会报错。

方法3:用append追加(旧版本兼容方案)

在pandas 2.0之前的版本中,可以用append方法直接追加新构造的DataFrame:

new_data = pd.DataFrame({
    'A': some_list_2a,
    'B': some_list_2b,
    'C': some_list_2c
})
dataframe = dataframe.append(new_data, ignore_index=True)

注意:pandas 2.0及以上版本已弃用append,官方推荐使用concat,所以不建议在新项目中使用此方法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:05:31