在 pandas 中的切片上设置值的正确方法
Correct way to set value on a slice in pandas
我有一个 pandas 数据框:数据。它有列 ["name"、'A'、'B']
我想做的(和工作的)是:
d2 = data[data['name'] == 'fred'] #This gives me multiple rows
d2['A'] = 0
这会将 fred 行的 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 要我怎么做?
这是来自 pandas 的一个非常常见的警告。这意味着您正在写入一个副本切片,而不是原始数据,因此由于链式赋值混乱,它可能不适用于原始列。请阅读此 post。对此SettingWithCopyWarning
有详细的讨论。在你的情况下,我认为你可以尝试
data.loc[data['name'] == 'fred', 'A'] = 0
我有一个 pandas 数据框:数据。它有列 ["name"、'A'、'B']
我想做的(和工作的)是:
d2 = data[data['name'] == 'fred'] #This gives me multiple rows
d2['A'] = 0
这会将 fred 行的 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 要我怎么做?
这是来自 pandas 的一个非常常见的警告。这意味着您正在写入一个副本切片,而不是原始数据,因此由于链式赋值混乱,它可能不适用于原始列。请阅读此 post。对此SettingWithCopyWarning
有详细的讨论。在你的情况下,我认为你可以尝试
data.loc[data['name'] == 'fred', 'A'] = 0