首页 >后端开发 >Python教程 >如何有效地将超过阈值的 Pandas DataFrame 值替换为零?

如何有效地将超过阈值的 Pandas DataFrame 值替换为零?

Barbara Streisand
Barbara Streisand原创
2024-12-17 00:21:25775浏览

How to Efficiently Replace Pandas DataFrame Values Exceeding a Threshold with Zero?

Pandas 条件替换

操作 DataFrame 时,您可能会遇到需要替换满足特定条件的值的情况。本问题旨在解决如何在特定列中用零替换超过阈值的值。

原始方法和限制

初始方法尝试使用语法 df [df.my_channel> 20000].my_channel = 0。但是,正如用户所观察到的,这种方法在原始 DataFrame 中工作时会遇到问题。

使用 .loc 索引器的解决方案

至要解决此问题,可以使用 .loc 索引器,在较新版本的 Pandas 中推荐使用该索引器。此语法允许精确的行和列选择和更改。要实现所需的替换,您可以使用以下代码:

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 的行。随后,df.loc[mask, column_name] = 0 将掩码为 True 的那些行的 my_channel 列设置为零。

注意

必须使用在这种情况下,.loc 索引器,因为在整数类型列上使用带有布尔索引的 .iloc 将导致未实现错误。

以上是如何有效地将超过阈值的 Pandas DataFrame 值替换为零?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn