【问题标题】:Why doesn't calling replace on a pandas dataFrame not act on the original object?为什么不对 pandas dataFrame 调用 replace 不作用于原始对象?
【发布时间】:2017-07-13 12:22:20
【问题描述】:

如果你看下面这个简单的例子:

import pandas as pd 
l1 = [1,2,'?']
df = pd.DataFrame(l1)
df.replace('?',3)

为什么这不替换“?”在数据框df中? df 引用的对象在调用 replace 时不会受到影响吗?

如果我写:

df = df.replace('?',3)

然后 df.replace 返回一个新的 dataFrame 替换了 ? 3.

我只是对为什么作用于对象的函数不能改变对象本身感到困惑。

【问题讨论】:

  • 可以!但是开发人员决定默认应该是它返回一个副本而不是就地编辑。 IMO,这是更安全的选择。但是,如果您使用适当的参数,您可以使用replace 来更改对象本身。您可以通过查看documentation 轻松找到

标签: python pandas object


【解决方案1】:

你需要inplace=True:

df.replace('?',3, inplace=True)
print (df)
   0
0  1
1  2
2  3

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 2016-10-02
    • 2020-05-16
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多