Pandas:写入原始数据帧.使用复制警告进行设置



我理解链式分配背后的想法,并且当我收到警告时

Pandas: SettingWithCopyWarning

这是为了让我知道我正在向副本而不是原始数据帧写入。

但我似乎无法成功地实现.loc或.ix()或.iloc(),所以我实际上是在向原始数据帧写入。

在"size"列不为null的情况下,我希望将值设置为null。我试过:

import numpy as np
df.loc[df['size'].notnull()].value=np.nan

我也尝试过使用replace函数,但没有用(要替换的值都是零,所以.replace(0,np.nan)的实现也可以)。

以下答案适用于原始问题(在OP编辑之前)。有问题的代码行是:

df.loc[df['size'].notnull() & df['value'] == 0].value = np.nan

我建议尝试这个(在[]中移动值):

df.loc[df['size'].notnull() & df['value'] == 0, 'value'] = np.nan

编辑:

这假设列名是"value",并且您没有试图设置values属性(正如上面注释中所述,您不能这样做)

因此,这将适用于以下数据帧,例如:

d = {'size' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd']),
 'value' : pd.Series([1., 2., 0.], index=['a', 'b', 'd'])}
df = pd.DataFrame(d)

相关内容

  • 没有找到相关文章

最新更新