在pandas切片上设置值的正确方法

发布于 2021-01-29 17:58:46

我有一个熊pandas据框:数据。它具有列[“ name”,’A’,’B’]

我想做的(和可以做的)是:

d2 = data[data['name'] == 'fred'] #This gives me multiple rows
d2['A'] = 0

这会将表行上的A列设置为0。我还完成了以下操作:

indexes = d2.index
data['A'][indexes] = 0

但是,两者都给我同样的警告:

/Users/brianp/work/cyan/venv/lib/python2.7/site-packages/pandas/core/indexing.py:128: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

pandas如何让我做到这一点?

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是熊猫的一种非常普遍的警告。这意味着您正在写副本切片,而不是原始数据,因此由于混淆的链式分配,它可能不适用于原始列。请阅读这篇文章。它对此进行了详细的讨论SettingWithCopyWarning。就您而言,我认为您可以尝试

    data.loc[data['name'] == 'fred', 'A'] = 0
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看