Pandas 中的条件值替换
在 Pandas 中使用 DataFrame 时,通常需要根据某些条件有选择地修改值。一个常见的任务是替换特定列中超过特定阈值的值。
之前使用 df[df.my_channel > 的尝试20000].my_channel = 0 语法在作为原始 DataFrame 的一部分时被证明不成功。这是由于 Pandas 0.20.0 中引入的索引更改所致,它弃用了 .ix 索引器。
为了解决这个问题,我们可以利用 .loc 索引器,它提供了另一种访问和修改行和列的方法
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
这段代码通过首先创建一个布尔掩码(mask)来实现想要的结果,其中每个值对应于df.my_channel 列中对应的值是否超过 20000。然后我们使用 .loc 来选择 mask 为 True 的行,并将值 0 分配给 column_name 列。
作为替代方案,以下可以使用 -line 代码片段:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
在这种情况下,使用 .loc 而不是 .iloc 很重要(基于整数位置的索引)以避免 NotImplementedError。
以上是如何根据条件阈值高效替换 Pandas DataFrame 中的值?的详细内容。更多信息请关注PHP中文网其他相关文章!