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

使用For循环向Pandas DataFrame追加行报错,求解决方法

解决Pandas DataFrame逐行追加的问题

为啥报错?

Pandas 2.0及以后的版本已经移除了DataFrame.append()方法,所以你运行代码时会触发AttributeError: 'DataFrame' object has no attribute 'append'。之前的append方法不仅和列表append逻辑不同,效率还很低,所以官方直接将其弃用删除了。

替代方法

1. 先攒审批通过的行,再合并(推荐,效率高)

别在循环里反复修改df2,先把符合条件的行存到列表里,最后一次性合并,性能好很多:

import pandas as pd

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3],
)

approved_rows = []
for i in range(len(df1)):
    row = df1.iloc[i]
    # 这里加你的审批逻辑,比如判断某列值是否符合要求
    # 举个例子:假设A列不是"A2"就算审批通过
    if row["A"] != "A2":
        approved_rows.append(row)

# 把攒的行合并成df2
df2 = pd.concat(approved_rows, axis=1).T.reset_index(drop=True)

2. 循环里逐行追加(适合数据量小的场景)

如果一定要在循环里实时更新df2,可以用pd.concat()每次合并单行:

import pandas as pd

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3],
)

df2 = pd.DataFrame()
for i in range(len(df1)):
    row = df1.iloc[i]
    # 审批逻辑,比如B列是"B1"就通过
    if row["B"] == "B1":
        # 把单行转成DataFrame再合并,ignore_index避免索引混乱
        df2 = pd.concat([df2, pd.DataFrame([row])], ignore_index=True)

3. 用loc直接赋值

如果提前知道df2的列名,也可以用loc直接加行:

import pandas as pd

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3],
)

# 先初始化df2的列,和df1保持一致
df2 = pd.DataFrame(columns=df1.columns)

for i in range(len(df1)):
    row = df1.iloc[i]
    # 审批逻辑,比如C列是"C0"就通过
    if row["C"] == "C0":
        # 用当前df2的行数作为新行的索引,直接赋值
        df2.loc[len(df2)] = row.values

小提醒

  • 循环操作DataFrame效率很低,如果数据量大,一定要用第一种“攒列表再合并”的方式。
  • 用pd.concat的时候记得加ignore_index=True,不然会保留原来的索引,容易出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:22:14