尝试 .loc 后的熊猫 SettingWithCopyWarning
Posted
技术标签:
【中文标题】尝试 .loc 后的熊猫 SettingWithCopyWarning【英文标题】:pandas SettingWithCopyWarning after trying .loc 【发布时间】:2016-07-03 19:41:41 【问题描述】:首先,我构建了一个新的 DataFrame 框架。然后通过从框架中过滤一些数据来创建一个新的框架2。现在我想给 frame2 赋值:
import numpy as np
from pandas import DataFrame
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California'])
mask = frame['Texas'] > 1
print frame[mask]
frame2 = frame.loc[mask]
frame2.loc['c', 'Ohio'] = 'me'
print frame2
但我收到了这个警告:
C:\Python27\lib\site-packages\pandas\core\indexing.py:461: 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
尽管我使用了推荐的 .loc 语法,为什么我仍然收到此警告?我应该怎么做才能避免这个警告?
【问题讨论】:
看来我在***.com/questions/23688307/… 找到了一种可能的解决方案。有人有其他好主意吗? 你在这里的意图是什么?您要更新副本还是原始 df @EdChum 我想更新副本。 【参考方案1】:变化
frame2 = frame.loc[mask]
到
frame2 = frame.loc[mask].copy()
消除此警告。
【讨论】:
以上是关于尝试 .loc 后的熊猫 SettingWithCopyWarning的主要内容,如果未能解决你的问题,请参考以下文章