我想使用 inplace=True vs df=df 的任何情况?

Any situation where I would want to use inplace=True vs df=df?

提问人:ProjectAvatar 提问时间:9/2/2023 更新时间:9/2/2023 访问量:82

问:

对就地论证有点困惑。特别是,与仅编写 df=df 以澄清我们正在使用的数据帧的标准方法相比,使用它是否有任何好处?

Python Pandas 就地

评论

1赞 Ignatius Reilly 9/2/2023
可能不是。也许它不会造成伤害,而且您喜欢代码的阅读方式,但请检查 stackoverflow.com/questions/43893457/...stackoverflow.com/questions/45570984/......

答:

0赞 Jiu_Zou 9/2/2023 #1

inplace=True,写入或编辑RAM中的原始数据,无需返回

inplace=False,在RAM中创建一个新的副本数据,并对其进行编辑,然后返回

评论

0赞 Ignatius Reilly 10/4/2023
OP似乎知道这一点。实际问题是是否使用与显式赋值(“仅编写 df=df 的标准方法”)inplace=True
3赞 mozway 9/2/2023 #2

如果多个名称指向同一个对象,则存在很大差异。 不能就地工作,它只是将副本重新分配给相同的名称。df = df.do_something()

下面是一个示例,演示了差异。

重新赋值 保持不变,它仍然指向原始对象和新输出。dfdf2df

df = pd.DataFrame({'col1': [1, float('nan'), 3]})
df2 = df

df = df.dropna()
print(df2)

   col1
0   1.0
1   NaN
2   3.0

随着对象被修改到位。inplace=True

df = pd.DataFrame({'col1': [1, float('nan'), 3]})
df2 = df

df.dropna(inplace=True)
print(df2)

   col1
0   1.0
2   3.0

在现实生活中,我真的没有看到一个用例可以保留对同一对象的多个引用。鉴于大熊猫的复杂性,有时很难跟踪视图和副本。我建议避免.事实上,对于大多数函数,都有关于删除此参数的讨论inplace=True

评论

1赞 ProjectAvatar 9/2/2023
有趣的是,不知道 inplace 实际上可以产生这样的差异。感谢您的澄清。