在pandas数据框中,我正在尝试映射df ['old_column'],为每一行应用用户定义的函数f并创建一个新列.
df['new_column'] = df['old_column'].map(lambda x: f(x))
Run Code Online (Sandbox Code Playgroud)
这将给出"SettingWithCopyWarning:正在尝试在DataFrame的切片副本上设置值." 错误.
我尝试了以下方法:
df.loc[:, 'new_column'] = df['old_column'].map(lambda x: f(x))
Run Code Online (Sandbox Code Playgroud)
这没有用.我能做什么?
Ale*_*gur 10
一个SettingWithCopy警告引发对某些操作pandas可能并没有达到预期的结果,因为他们可能会作用于副本而不是原始数据集.不幸的是,大熊猫本身没有简单的方法来判断一个特定的呼叫是否会这样做,所以这个警告往往会在许多情况下被提出,在很多情况下(从我作为用户的角度来看)实际上并不存在任何问题.
你的两个方法调用都没问题.如果您想完全摆脱警告,您可以指定:
pd.options.mode.chained_assignment = None
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅StackOverflow问答.
| 归档时间: |
|
| 查看次数: |
7025 次 |
| 最近记录: |