pandas DataFrame间拷贝末行值时使用append方法触发TypeError错误
报错原因
你调用append时传入的是df_old.iloc[-1, df_old.columns.get_loc("low")],该语句返回的是单个numpy.float64类型的数值,而pandas的append方法仅支持拼接Series、DataFrame类型的对象,因此触发类型错误。
另外补充说明:pandas 1.4.0及以上版本已经正式弃用DataFrame.append()方法,更推荐使用兼容性更强的pd.concat()实现数据拼接。
解决方案
根据你要把df_old末行low列的值存入df_new的需求,可选用以下两种写法:
- 写法1:适配仍支持append的旧版本pandas
# 取出low列的目标值 low_value = df_old.iloc[-1]["low"] # 转成带列名的Series后再拼接,ignore_index=True自动重置行索引 df_new = df_new.append(pd.Series({"low": low_value}), ignore_index=True)
- 写法2:适配所有pandas版本的官方推荐写法
# 取出low列的目标值 low_value = df_old.iloc[-1]["low"] # 把单条数据转为DataFrame后用concat拼接 new_row = pd.DataFrame({"low": [low_value]}) df_new = pd.concat([df_new, new_row], ignore_index=True)
注意:
- 如果df_new是新建的空表,建议初始化时就指定列名,避免拼接时列不匹配:
df_new = pd.DataFrame(columns=["low"])- 如果df_new包含多列,可在构造Series/DataFrame时补充对应字段的值,未指定的字段拼接后会默认填充NaN。
内容的提问来源于stack exchange,提问作者Pista Khan
相关产品推荐
相关产品推荐

