如何修改DataFrame条件判断代码实现指定数值区间逻辑?
解决方案
首先修正原始代码中的逻辑运算优先级问题(&的优先级高于==,必须给每个比较表达式加括号),再调整第二个条件的范围,最后通过numpy.select处理默认情况:
import numpy as np # 定义调整后的条件 conditions = [ # 第一个条件:In stock?为1且qty_total小于1 (final_dataframe['In stock?'] == 1) & (final_dataframe['qty_total'] < 1), # 第二个条件:In stock?为0且qty_total在1到98765之间(包含两端) (final_dataframe['In stock?'] == 0) & (final_dataframe['qty_total'].between(1, 98765)) ] # 对应条件的输出值 choices = ['True', 'False'] # 生成新列,不满足任何条件时填充默认值(这里用None,可替换为任意值) final_dataframe['Unlist This'] = np.select(conditions, choices, default=None)
关键说明
- 用括号包裹每个比较表达式,避免因运算优先级导致的逻辑错误。
- 使用
between(1, 98765)精准限定qty_total的范围,等价于(qty_total >=1) & (qty_total <=98765)。 default参数用于处理qty_total超过98765的情况,你可以根据需求替换为''、'N/A'等任意值。
内容的提问来源于stack exchange,提问作者ijoubert21
相关产品推荐
相关产品推荐

