Pandas:在切片上调用应用时设置WithCopyWarning

Pandas: SettingWithCopyWarning when calling apply on a slice

我有一个包含几列的 Pandas DataFrame,但我想(有条件地)操作单个列中的所有值,如下所示:

df[my_column] = df[my_column].apply(lambda x: -float(x))

这有效,但是 Pandas 给了我一个 SettingWithCopyWarning。

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

我处理此列的方式有问题吗?

问题出现在您的代码中。 df 可能是另一个数据帧的一部分,pandas 警告您不要修改 df,因为它是另一个数据帧的副本。

当您想对数据框进行子集化并进一步操作时,最简单的解决方案是使用 .copy() 方法。

df = df_original.copy()

现在您可以应用如下代码:

df[my_column] = xxx

没有 SettingWithCopyWarning。