有条件地replacepandas
我可能做的很愚蠢,但是我很难过。
我有一个数据框,我想replace特定列中的值超过一个值为零。 我原以为这是达到这个目的的一种方式:
df[df.my_channel > 20000].my_channel = 0
如果我将通道复制到一个新的数据框中,这很简单:
df2 = df.my_channel df2[df2 > 20000] = 0
这确实是我想要的,但似乎不作为原始数据框的一部分与通道一起工作。
感谢提前。
本
.ix
索引器可以在0.20.0之前的pandas版本上正常工作,但是由于pandas 0.20.0, .ix
索引器已经被弃用 ,所以你应该避免使用它。 相反,您可以使用.loc
或iloc
索引器。 您可以通过以下方式解决此问题
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
mask
可帮助您selectdf.my_channel > 20000
为True
,而df.loc[mask, column_name] = 0
将值设置为0,以将mask
在列名称为column_name
的列中保留。
更新:在这种情况下,你应该使用loc
因为如果你使用iloc
,你会得到一个NotImplementedError
告诉你基于iLocation的整型布尔索引是不可用的 。
尝试
df.ix[df.my_channel > 20000, 'my_channel'] = 0