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

时间:2018-02-23 20:33:52

标签: pandas conditional

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

df是一个pandas数据帧。 AggRow是一组带有整数的数据。

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

conditionmet = df['AggRow'] <= 6001

但是如果我希望如果AggRow是&lt; = 6001或者介于10001和10009之间,则conditionmet是真的,我遇到了麻烦。以下表达式仅针对第一个条件产生conditionmet = True,即,AggRow <= 6001,显然忽略了我告诉它关于10001和10009的内容。

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

如果AggRow&lt; = 6001或AggRow都&gt; = 10001且&lt; = 10009,我如何使conditionmet = True?同样,我想要一个使用类似语法的答案,如果可能的话。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试使用.loc,这将在满足条件的情况下使用True填充“conditionmet”列。

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

如果你想要:'/ p>,你也可以用'假'填写NaN(也就是你的上述条件不符合的每条记录)。

df.fillna('False')