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

为什么自定义Pandas函数无法修改DataFrame并返回追加行后的结果?

问题原因与解决方案

核心问题

pandas 中的append()方法不会修改原DataFrame对象,而是将追加后的结果作为新的DataFrame返回,你没有把执行追加后的结果赋值给变量,所以深拷贝得到的d2自始至终都没有被修改,返回的自然还是和原数据一致的内容。

修正后的代码

目前append()方法从pandas 1.4.0版本开始已被官方标记为弃用,推荐使用pd.concat()完成合并操作,修正代码如下:

import pandas as pd

df1 = pd.DataFrame({"a":[1, 2, 3, 4],
                    "b":[5, 6, 7, 8]})
  

def append_function(d1):
    d2 = d1.copy(deep=True)
    display(d2)
    df2 = pd.DataFrame({"a":[12, 22, 33],
                        "b":[51, 62, 73]})

    # 接收合并后的新DataFrame赋值给d2
    d2 = pd.concat([d2, df2], ignore_index=True)
    display(d2)
    return d2

df3 = append_function(df1)
display(df3)

补充说明

  • 如果你仍在使用低版本pandas要使用append(),只需把追加行的代码改为d2 = d2.append(df2, ignore_index=True)即可,但不推荐长期使用已废弃的接口。
  • 加上ignore_index=True参数会重置合并后DataFrame的行索引,避免出现重复的索引值,你可以根据实际需求决定是否添加该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:03