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

pandas DataFrame调用append方法无法追加数据如何解决

问题原因

你的代码运行后final_df为空,核心原因是 pandas 中DataFrame.append()不是原地操作方法:该方法不会修改调用它的原DataFrame,而是返回拼接完成后的新DataFrame对象。你之前的代码只调用了append(),但没有接收返回值,所以初始化的空final_df始终没有被修改。
另外补充:pandas 从1.4.0版本开始已经将append()方法标记为弃用,后续版本会直接移除该方法,官方更推荐使用pd.concat()实现DataFrame拼接,尤其是批量拼接场景下性能更好。

修复方案

方案1:基于原append写法修正

每次调用append()后,将返回的新DataFrame重新赋值给final_df即可,修正后代码如下:

import pandas as pd
def my_fun(var):
    # 函数内无需重复导入pandas,顶部导入后全局可用
    temp={"File_Exist":'no',"desc":var,"Bucket":'bucket',"name":'fadsf',"size":'','last_modified':'',"generation":''}
    temp_df=pd.DataFrame(temp,columns=list(temp.keys()), index=['x'])
    return temp_df

final_df=pd.DataFrame()   
data_df=my_fun('my 1st file')
# 接收append返回的新对象,赋值回final_df
final_df = final_df.append(data_df,ignore_index = True)
data_df=my_fun('my 2nd file')
final_df = final_df.append(data_df,ignore_index = True)

print(final_df)

方案2:推荐写法(使用pd.concat,兼容新版pandas)

更推荐先把所有待拼接的DataFrame存入列表,最后调用pd.concat()一次性完成拼接,避免逐次生成新对象带来的性能损耗,代码如下:

import pandas as pd
def my_fun(var):
    temp={"File_Exist":'no',"desc":var,"Bucket":'bucket',"name":'fadsf',"size":'','last_modified':'',"generation":''}
    temp_df=pd.DataFrame(temp,columns=list(temp.keys()), index=['x'])
    return temp_df

# 用列表收集所有需要拼接的DataFrame
df_container = []
df_container.append(my_fun('my 1st file'))
df_container.append(my_fun('my 2nd file'))
# 一次性完成拼接
final_df = pd.concat(df_container, ignore_index=True)

print(final_df)

运行上述任意一段修正后的代码,都能得到包含两条追加数据的final_df。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:06:48