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

向空Pandas DataFrame追加行无效,求问题原因及解决方法

问题分析与解决

你遇到的问题核心在于pandas的append()方法不会修改原DataFrame——它会返回一个包含新增行的新DataFrame对象,而你没有将这个返回值重新赋值给df,所以原来的空DataFrame根本没被改变。

原代码的问题

看你这段代码:

import pandas as pd
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
l = [1607.8, 1688.17, 1605.66, 1469.03, 1312.65, 1451.74, 1445.26, 1350.94, 1371.27, 1201.6, 1240.59, 1291.43]

df = pd.DataFrame(columns = months, dtype=float)
df.append([l])  # 这里只生成新DF,没赋值回原变量
print(df)

df.append([l])确实生成了包含目标行的新DataFrame,但你没有把这个结果存回df变量,所以df还是最初创建的空DataFrame,打印出来自然是空的。

正确的兼容写法(旧版pandas)

如果你一定要用append,需要把返回值赋值给df,同时建议加上ignore_index=True避免索引混乱:

df = pd.DataFrame(columns = months, dtype=float)
df = df.append([l], ignore_index=True)
print(df)

更推荐的写法(pandas 2.0+)

注意:pandas从2.0版本开始已经弃用了append()方法,官方推荐使用pd.concat()或者直接构造DataFrame(就像你后来用的方法)。用concat的示例如下:

df = pd.DataFrame(columns = months, dtype=float)
new_row = pd.DataFrame([l], columns=months)
df = pd.concat([df, new_row], ignore_index=True)
print(df)

而你后来用的df = pd.DataFrame([l], columns = months)之所以有效,是因为你直接创建了包含目标行的新DataFrame并赋值给df,跳过了“先创建空DF再追加”的步骤,这其实是更高效的写法——尤其是当你只需要添加一行的时候,完全没必要先创建空DF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:06:52