有条件替换 Pandas

发布于 2021-02-02 23:21:50

我可能在做一些非常愚蠢的事情,但是我很沮丧。

我有一个数据框,我想用超过零的值替换特定列中的值。我以为这是实现此目标的一种方式:

df[df.my_channel > 20000].my_channel = 0

如果将通道复制到新的数据框中,这很简单:

df2 = df.my_channel 

df2[df2 > 20000] = 0

这完全符合我的要求,但似乎无法与通道一起用作原始数据帧的一部分。

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

    .ixindexer可以在0.20.0之前的熊猫版本上正常工作,但是由于pandas为0.20.0 ,因此不推荐使用.ix indexer,因此应避免使用它。而是可以使用或索引器。你可以通过以下方法解决此问题:.lociloc

    mask = df.my_channel > 20000
    column_name = 'my_channel'
    df.loc[mask, column_name] = 0
    

    或者,一行

    
    df.loc[df.my_channel > 20000, 'my_channel'] = 0
    

    mask帮助你选择这些行df.my_channel > 20000为True,而df.loc[mask, column_name] = 0将值0

    到所选择的行,其中mask在其名称是列存放column_name

    更新: 在这种情况下,应该使用,loc因为如果使用iloc,则会NotImplementedError告诉你基于iLocation的基于整数类型的布尔索引不可用。



知识点
面圈网VIP题库

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

去下载看看