当前位置:  开发笔记 > 编程语言 > 正文

df.loc导致SettingWithCopyWarning警告消息

如何解决《df.loc导致SettingWithCopyWarning警告消息》经验,为你挑选了1个好方法。

我的代码的以下行导致警告:

import pandas as pd

s = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
s.loc[-1] = [5,np.nan,np.nan,6]
grouped = s.groupby(['A'])
for key_m, group_m in grouped:
    group_m.loc[-1] = [10,np.nan,np.nan,10]

C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:10: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

根据文档,这是推荐的做法,所以发生了什么?

谢谢你的帮助.



1> piRSquared..:

文档有点令人困惑.

dataframe是另一个人的副本dataframe.您可以通过运行验证这一点bool(df.is_copy) 您正在收到警告,因为您正在尝试分配给此副本.

警告/文档告诉您应该如何构建df.现在它不是你应该如何分配给它的副本.

df = some_other_df[cols]

df复制一份some_other_df.警告建议这样做

df = some_other_df.loc[:, [cols]]

现在已经完成,如果你选择忽略这个警告,你可以

df = df.copy()

要么

df.is_copy = None

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有