Pandas DataFrame 中的条件值替换
使用 Pandas DataFrame 时,您可能会遇到需要根据条件有条件替换值的情况指定条件。此问题说明了这样一个场景,其中用户试图将特定列中超过阈值的值替换为零。
最初,用户尝试使用以下方法:
df[df.my_channel > 20000].my_channel = 0
然而,这个方法没有任何结果。这是因为 Pandas 自 0.20.0 版本以来已弃用 .ix 索引器,用户应使用 .loc 或 .iloc 索引器。
正确的解决方案包括使用 .loc 或 .iloc 来定位特定行或列并执行条件替换。以下是如何使用 .loc:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
或者,您可以使用 .loc 在一行中完成相同的任务:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
掩码变量有助于识别满足条件的行条件 df.my_channel > 20000,并且 df.loc[mask, column_name] = 0 为指定列中选定的行分配 0。
注意:在此特定场景中,建议使用 .loc 代替.iloc 以避免 NotImplementedError,因为不支持使用 .iloc 进行基于整数的布尔索引。
以上是如何有条件地替换 Pandas DataFrame 列中的值?的详细内容。更多信息请关注PHP中文网其他相关文章!