如何在不使用NumPy的情况下为DataFrame添加多条件判断列'is_good'
不用NumPy实现双条件列标记的方法
当然可以不用NumPy搞定这个需求!你只需要在原有的列表推导式基础上,同时加入对value2列的判断逻辑就行,或者用apply函数实现更直观的行级判断,两种方法都很简单。
方法1:扩展列表推导式(推荐,速度更快)
你之前的列表推导式只处理了单列,现在用zip()把value和value2两列的元素一一配对,就能同时判断两个条件了:
df['is_good'] = [1 if (1 <= x <= 6) and (5 <= y <= 10) else 0 for x, y in zip(df['value'], df['value2'])]
这里的x对应每一行value列的值,y对应同一行value2列的值,只有当两个范围条件同时满足时,才会标记为1,否则为0。这种方法的优势是执行效率高,适合处理较大的数据集。
方法2:使用apply函数(可读性更强)
如果觉得列表推导式的条件写在一起有点拥挤,可以用apply函数按行处理,逻辑更清晰:
def judge_good(row): # 同时判断两个列的范围条件 if (1 <= row['value'] <= 6) and (5 <= row['value2'] <= 10): return 1 else: return 0 # axis=1表示按行应用函数 df['is_good'] = df.apply(judge_good, axis=1)
这种方式把判断逻辑封装成了单独的函数,后续如果要修改条件,直接改函数里的判断语句就行,维护起来更方便。
小提醒:要确保value和value2列都是数值类型(比如int或float),不然可能会出现条件判断失效的情况哦。
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐

