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

如何将DataFrame指定行追加到另一个DataFrame?append报错求助

解决pandas DataFrame追加行时的append参数缺失错误

错误原因分析

你遇到的append() missing one required positional argument: 'other'错误,主要有两种常见情况:

  • pandas版本问题:pandas 2.0及以上版本已经彻底移除了DataFrame.append()方法,原来的调用方式自然会报错。
  • 参数格式不匹配:即使是旧版本pandas,若传入的行数据格式不对(比如直接传numpy数组),或目标DataFrame未正确初始化,也可能触发该错误。

具体解决方法

情况1:使用pandas 2.0+版本(推荐方案)

官方推荐用pd.concat()替代append(),这也是更高效的做法:

  1. 先把要追加的单行转成DataFrame(用双括号iloc[[i]],避免返回Series)
  2. 用concat合并两个DataFrame
import pandas as pd

# 提取要追加的行(双括号返回DataFrame)
target_row = data.iloc[[i]]
# 合并到a中,ignore_index=False保留原行的时间索引
a = pd.concat([a, target_row], ignore_index=False)

如果不需要保留原索引,将ignore_index设为True即可。

情况2:使用pandas 2.0以下版本

确保目标DataFramea已正确初始化(和data列名一致),再用append():

# 先初始化空的a,列名和data保持一致
a = pd.DataFrame(columns=data.columns)
# 追加单行(iloc[i]返回Series,直接传入即可)
a = a.append(data.iloc[i], ignore_index=False)

如果用data.values[i](numpy数组),需要先转成Series:

row_series = pd.Series(data.values[i], index=data.columns)
a = a.append(row_series, ignore_index=False)

效率优化提示

如果需要批量追加多行,别在循环里反复调用concat或append——先收集所有要筛选的行号,一次性提取后合并,效率会高很多:

# 假设你有多个目标行号存在列表里
selected_rows = [0, 3, 5]
# 一次性提取所有目标行
target_rows = data.iloc[selected_rows]
# 合并到a中
a = pd.concat([a, target_rows], ignore_index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:55:16