我收到此错误:
C:\Users\rt\Anaconda3\lib\site-packages\pandas\core\indexing.py:337: 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
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[key] = _infer_fill_value(value)
C:\Users\rt\Anaconda3\lib\site-packages\pandas\core\indexing.py:517: 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
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[item] = s
但是,我已经在使用 .loc 了,所以不确定为什么会发生此错误。代码概要如下:
for name, group in results.groupby():
for idx, row in group.iterrows():
group.loc[idx, 'area'] = 10.0
我正在使用最新的 pandas (0.20.3) 和 python (3.6)
最佳答案
它告诉您正在修改您可能想要修改的数据帧的副本,而不是数据帧本身。在本例中,group
实际上是由 .groupby()
生成器创建的另一个数据帧。
您的代码保持结果
不变,而是修改group
。这可能不是您想要做的,这就是出现警告的原因。如果是,并且您想禁用警告,可以执行 pd.set_option('SettingWithCopyWarning', None)
。
关于python - 即使使用 .loc 后也出现设置与复制警告错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538926/