如何通过循环为pandas DataFrame批量应用多条件值替换规则
实现代码
import pandas as pd import numpy as np # 构造示例DataFrame dict1 = {'x_math_lp': {'John':'0', 'Lisa': 1, 'Karyn': '2'}, 'o_math_lp': {'John': 0.005, 'Lisa': 0.001, 'Karyn':0.9}} df = pd.DataFrame(dict1) # 1. 预处理:将所有x_开头的列转为数值类型,避免字符串比较出错 x_cols = [col for col in df.columns if col.startswith('x_')] df[x_cols] = df[x_cols].apply(pd.to_numeric) # 2. 循环遍历所有列对执行替换规则 for x_col in x_cols: # 匹配对应的o_列名 o_col = f"o_{x_col.removeprefix('x_')}" if o_col not in df.columns: continue # 应用规则:x列值<1 且 o列值≥0.05时,x列对应值替换为NaN df.loc[(df[x_col] < 1) & (df[o_col] >= 0.05), x_col] = np.nan print(df)
代码说明
- 自动识别所有成对的
x_前缀、o_前缀列,无需手动列全30列,适配批量处理场景 - 提前做了数据类型转换,兼容原始x列中数值为字符串的情况
- 你可以根据实际业务规则,直接修改条件判断中的阈值(
<1、>=0.05)即可调整匹配逻辑
内容的提问来源于stack exchange,提问作者newbzzs
相关产品推荐
相关产品推荐

