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

Pandas中向新DataFrame添加特定类型数据返回空表问题求助

哈哈,这个问题我太熟悉了!刚用Pandas的时候我也被这个append()的特性坑过好几次😆

问题出在哪?

核心原因是:Pandas的append()方法不会原地修改你的原DataFrame。它的设计是返回一个包含新增数据的全新DataFrame对象,而你现在的代码只是调用了append(),却没有把返回的结果重新赋值给date变量——所以原来的date还是保持创建时的空状态,自然打印出来是空的。

另外还有个小细节:你创建的pd.Series没有指定列名,就算赋值成功,也可能出现列不匹配的问题,最好明确指定和DataFrame一致的列名。

怎么解决?

给你几个可行的方案,按推荐程度排序:

方案1:用官方推荐的pd.concat()(最稳妥)

因为append()在Pandas 2.0及以上版本已经被标记为弃用了,官方更推荐用concat来合并数据:

import pandas as pd

# 初始化空DataFrame
date = pd.DataFrame(columns=['Date'])
# 构造要添加的单行数据(转成DataFrame格式)
new_row = pd.DataFrame({'Date': [report2.loc[1, 'Serv']]})
# 合并原DataFrame和新行,重新赋值给date
date = pd.concat([date, new_row], ignore_index=True)
print(date)

方案2:修正append()的用法(兼容旧版本)

如果你还在使用较低版本的Pandas,一定要记得把append()的返回值重新赋值给原变量,同时给Series指定列名:

import pandas as pd

date = pd.DataFrame(columns=['Date'])
# 把append的结果重新赋值给date,同时给Series指定name匹配列名
date = date.append(pd.Series(report2.loc[1, 'Serv'], name='Date'), ignore_index=True)
print(date)

方案3:直接从列表构造(适合少量数据)

如果只是添加单条数据,这种方式更简单直接:

import pandas as pd

# 直接用字典列表初始化DataFrame
date = pd.DataFrame([{'Date': report2.loc[1, 'Serv']}])
print(date)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:20:05