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中文网其他相关文章!