如何将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(),这也是更高效的做法:
- 先把要追加的单行转成DataFrame(用双括号
iloc[[i]],避免返回Series) - 用
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
相关产品推荐
相关产品推荐

