Pandas基于具有多个条件的另一列的评估来创建列

我想基于使用pandas对另一列的评估来创建一列布尔值.理想情况下,我想用类似于我复制的语法来做,但如果这是不可能的,我会接受其他建议.

df是一个熊猫数据帧. AggRow是一组带有整数的数据.

所以,我有AggRow的数据,它们具有一系列值.我可以基于单个标准成功创建一个新列,conditionmet,如果我希望在AggRow小于或等于6001的任何地方,conditionmet为True:

conditionmet = df [‘AggRow’]< = 6001 但是如果我希望如果AggRow是< = 6001或者介于10001和10009之间,则conditionmet是真的,我遇到了麻烦.下面的表达式只对第一个条件产生conditionmet = True,即AggRow <= 6001,显然忽略了我告诉它的10001和10009. conditionmet =((df [‘AggRow’]< = 6001)|((df [‘AggRow’]> = 10001)&(df [‘AggRow’]< = 10009))) 如果AggRow< = 6001或AggRow都> = 10001和< = 10009,我如何使conditionmet = True?同样,如果可能的话,我想要一个使用类似语法的答案.谢谢.

最佳答案 尝试使用.loc,这将在满足条件的情况下使用True填充列’conditionmet’.

df.loc[(df['AggRow'] <= 6001)
      |((df['AggRow'] <= 10009)
       &(df['AggRow'] >= 10001)), 'conditionmet'] = 'True'

如果你想要:’False’,你也可以填写NaN(也就是你的上述条件不符合的每条记录):

df.fillna('False')
点赞