Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pandas中设置切片值的正确方法_Python_Pandas_Chained Assignment - Fatal编程技术网

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

Python 在pandas中设置切片值的正确方法,python,pandas,chained-assignment,Python,Pandas,Chained Assignment,我有一个数据框架:数据。它有列[“名称”、“A”、“B”] 我想做(和工作)的是: 这会将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 try

我有一个数据框架:数据。它有列[“名称”、“A”、“B”]

我想做(和工作)的是:

这会将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

熊猫想让我怎么做?

这是熊猫发出的一个非常常见的警告。这意味着您是在副本切片中写入数据,而不是在原始数据中写入数据,因此它可能不会应用于原始列,因为链接赋值比较混乱。请看这个。它详细讨论了使用CopyWarning设置的
。对你来说,我想你可以试试

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

我正要发布同样的东西。逻辑上的“一行”比不必要的行要好。有没有一种直接的方法可以在编辑列的情况下返回新的df,而保持原始df不变?很多人说这是正确的方法,我也这么认为。然而,有时我还是会收到警告,说我正在副本上设置值,并建议我在已经使用时使用.loc。有人经历过同样的事情吗?@CalvinKu,是的!当我做它要求我做的事情时,我得到了同样的警告!在我看来,这是一种模棱两可的行为,应该被视为一种错误,但熊猫们已经听腻了,所以我没有信心它会得到解决。。。真遗憾。。。特别是来自R。有趣的是,有时我会得到这个,无论我如何重构它,它都不会消失。但过了一段时间,当我再次运行相同的代码时,警告消失了。我猜熊猫的这一部分的实现不是很健壮,所以你偶尔会看到像这样的误报。但让我感到不安的是,有些人似乎没有这样做,所以他们确信是你的代码错了……哈哈
data.loc[data['name'] == 'fred', 'A'] = 0