我以为我遵循了最佳实践:
import pandas as pd
df=pd.DataFrame({'cond':['a', 'b', 'a'], 'value':[1.5, 2.5, 3.5]})
mask = df.cond == 'a'
df.loc[mask, 'value'] = df.loc[mask, 'value'] * (-1)
本质上,如果满足条件,请将值替换为负值。执行此操作以免触发警告的更好方法是什么?
事实证明,问题不在于如图所示的代码。该代码示例工作正常。
在现实世界中,df
是按如下方式创建的:df = df2[['cond', 'value']]
. 在此行中添加.copy()
,修复了警告。
@jezrael在评论中指出了此解决方案。