的目的
SettingWithCopy是警告用户您 可能 正在做的事情不会像预期的那样更新原始数据帧。
这里
data是一个数据帧,可能是单个dtype(或不是单个dtype)。然后,您将参考
data['amount']作为系列的参考,并对其进行更新。这可能在您的情况下有效,因为您返回的是相同的dtype数据。
但是,它 可以 创建一个副本,以更新
data['amount']您看不到的副本。然后您会想知道为什么它没有更新。
熊猫几乎在所有方法调用中都返回对象的副本。该
inplace操作是一种便捷操作,可以正常运行,但是通常不清楚数据是否正在被修改并且可能在副本上起作用。
更清楚地做到这一点:
data['amount'] = data["amount"].fillna(data.groupby("num")["amount"].transform("mean"))data["amount"] = data['amount'].fillna(mean_avg)复印的另一优点。您可以链接操作,而这是不可能
inplace的。
例如
data['amount'] = data['amount'].fillna(mean_avg)*2
仅供参考。
inplace操作既没有更快也没有更高的内存效率。my2c他们应该被禁止。但是对于该API来说为时已晚。
您当然可以关闭此功能:
pd.set_option('chained_assignment',None)Pandas可以在整个测试套件中运行,并将其设置为
raiseFYI(这样我们就知道是否正在发生链接)。



