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

Pandas 2.0移除append()后,支持链式调用的简短替代方法是什么?

Pandas 2.0 链式调用版 append 替代方案

Pandas 2.0 已经彻底移除了 Series.append() 和 DataFrame.append() 方法,官方推荐用 concat() 替代,但直接写 concat() 搞链式调用太啰嗦,这里给几个能实现单行添加、还能顺畅衔接链式调用的简洁方案:

方案1:封装 concat 成链式写法

直接把 concat() 嵌入链式调用流程,虽然比原 append() 长一点,但能满足需求:

import pandas as pd

df = pd.DataFrame([[4, 5, 6], [7, 8, 9]])
# 链式添加单行+后续操作示例
df = (pd.concat([df, pd.DataFrame([[10, 20, 30]])], ignore_index=True)
      .rename(columns={0: 'A', 1: 'B', 2: 'C'}))

嫌每次写 pd.DataFrame([...]) 麻烦?可以自己写个小辅助函数,用 pipe() 衔接:

def add_row(df, row_data):
    return pd.concat([df, pd.DataFrame([row_data])], ignore_index=True)

# 链式添加多行+后续操作示例
df = (pd.DataFrame([[4,5,6],[7,8,9]])
      .pipe(add_row, [10,20,30])
      .pipe(add_row, [40,50,60])
      .drop(columns=[0]))

方案2:适配连续整数索引的简洁写法

如果你的 DataFrame 用的是连续整数索引,还可以用这个更短的写法,本质还是基于 concat():

df = (pd.DataFrame([[4,5,6],[7,8,9]])
      .pipe(lambda d: pd.concat([d, pd.Series([10,20,30], index=d.columns).to_frame().T], ignore_index=True)))

原写法的局限性对比

你原来的 df.loc[df.index.size] = [10,20,30] 是直接修改原 DataFrame 对象,没法接着链式调用其他 Pandas 方法;上面的方案都是返回新的 DataFrame 实例,完美支持后续的链式操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:57:16