在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))
没有帮助。我该怎么办?
答案 0 :(得分:10)
SettingWithCopy
中的某些操作会引发pandas
警告,这些操作可能没有预期的结果,因为它们可能是在复制而不是原始数据集上。不幸的是, pandas本身没有简单的方法来判断一个特定的呼叫是否会或者不会这样做,所以这个警告往往会在很多很多情况下提出(来自我的)作为用户的观点)没有什么事实上是不对的。
你的两个方法调用都没问题。如果您想完全摆脱警告,可以指定:
pd.options.mode.chained_assignment = None
有关详细信息,请参阅this StackOverflow Q&A。