如何编写函数用Pandas的loc处理DataFrame多列,将≤0值替换为NaN?
Pandas批量替换列中<=0的值为NaN的简便方法
方法1:一次性处理整个DataFrame
用Pandas内置的mask()方法,一行代码就能完成所有列的替换操作,它会自动把满足<=0条件的元素换成np.nan:
import numpy as np df = df.mask(df <= 0)
如果不想修改原DataFrame,可赋值给新变量:new_df = df.mask(df <= 0)
方法2:仅处理指定列
如果只需要替换col1到col4这类特定列,先列出目标列名,再批量处理即可:
target_cols = ['col1', 'col2', 'col3', 'col4'] df[target_cols] = df[target_cols].mask(df[target_cols] <= 0)
方法3:用replace()实现(可选)
也可以通过replace()配合匿名函数完成替换,不过性能略逊于mask(),适合场景简单的情况:
df = df.replace(to_replace=lambda x: x <= 0, value=np.nan)
内容的提问来源于stack exchange,提问作者benfo
相关产品推荐
相关产品推荐

