我有一个pandas DataFrame“data”,其中的列包含“cond1”,“cond2”,“cond3”,“cond4”,“cond5”,“cond6”,“cond7”,每个都包含True / False
我想添加另一个列table [“condMet”],它将包含True / False,具体取决于是否满足所有7个条件。
目前我有这个达到了这个目的:
data["condMet"] = (data.cond1 == True) & (data.cond2 == True) & (data.cond3 == True) & (data.cond4 == True) & (data.cond5 == True) & (data.cond6 == True) & (data.cond7 == True)
有更简单的方法吗?例如。我只能通过
选择这些列data.iloc[:,5:12]
我现在如何将其切片以仅包含所有列都为TRUE的行?
答案 0 :(得分:1)
如果您有一个DataFrame,其中所有列都是布尔值(就像您在问题末尾提到的切片一样,您可以逐行应用all
:
d = data.iloc[:, 5:12]
d[d.all(axis=1)]
这将选择所有列都具有布尔值true的行。
如果您只想要布尔列来告诉您行是否包含在内,那只是d.all(axis=1)
。