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

为何Pandas DataFrame函数可新增列却无法实现行子集化?

问题原因解析

这是因为Python可变对象的引用传递规则与pandas的操作特性共同导致的:

  • 添加新列是原地修改原对象
    函数里的a_dataframe一开始是原frame的引用,执行a_dataframe["new_col"] = "new_value"时,属于对可变对象(DataFrame)的原地修改操作,直接改变了原frame的内容,所以外部的frame能看到新增的列。

  • 截取前10行是创建新对象,未改变原引用
    a_dataframe.iloc[0:10,:]会生成一个原DataFrame的子集新对象,而a_dataframe = ...只是把函数内部的局部变量重新指向了这个新对象,并没有修改外部frame原本指向的原对象,所以外部的frame仍保留100行。

如果要实现既添加列又让原对象变为前10行,有两种常用方式:

方式一:函数返回新对象,外部重新赋值

def test(a_dataframe):
    a_dataframe["new_col"] = "new_value"
    return a_dataframe.iloc[0:10,:]

frame = test(frame)

方式二:原地删除多余行(不推荐处理大数据集)

def test(a_dataframe):
    a_dataframe["new_col"] = "new_value"
    # 原地删除第10行及之后的所有行
    a_dataframe.drop(a_dataframe.index[10:], inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:40:37