【问题标题】:Getting settingwithcopywarning error even after using .loc即使在使用 .loc 之后也会出现带有复制警告的设置错误
【发布时间】:2018-01-14 06:55:30
【问题描述】:

我收到此错误:

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)

【问题讨论】:

  • 你能添加结果df吗?

标签: python pandas


【解决方案1】:

它告诉您正在修改您可能打算修改的数据框的副本,而不是数据框本身。在这种情况下,group 实际上是由.groupby() 生成器创建的另一个数据框。

您的代码将保持 results 不变,并改为修改 group。这可能不是您打算做的,这就是出现警告的原因。如果是,并且您想禁用警告,您可以使用pd.set_option('SettingWithCopyWarning', None)

【讨论】:

  • 我确实打算修改和使用group 这样就可以了 :) 谢谢!
猜你喜欢
  • 2017-02-23
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 2016-03-25
相关资源
最近更新 更多