Pandas映射到新列,SettingWithCopyWarning

时间:2017-02-08 06:07:19

标签: python pandas

在pandas数据框中,我尝试映射df [&#39; old_column&#39;],为每一行应用用户定义的函数 f 并创建一个新列。< / p>

df['new_column'] = df['old_column'].map(lambda x: f(x))

这将给出&#34; SettingWithCopyWarning:尝试在DataFrame的切片副本上设置一个值。&#34;错误。

我尝试了以下内容:

df.loc[:, 'new_column'] = df['old_column'].map(lambda x: f(x))

没有帮助。我该怎么办?

1 个答案:

答案 0 :(得分:10)

SettingWithCopy中的某些操作会引发pandas警告,这些操作可能没有预期的结果,因为它们可能是在复制而不是原始数据集上。不幸的是, pandas本身没有简单的方法来判断一个特定的呼叫是否会或者不会这样做,所以这个警告往往会在很多很多情况下提出(来自我的)作为用户的观点)没有什么事实上是不对的。

你的两个方法调用都没问题。如果您想完全摆脱警告,可以指定:

pd.options.mode.chained_assignment = None

有关详细信息,请参阅this StackOverflow Q&A

相关问题