[英]Filtering multiple columns with conditions in Pandas
我正在尝试按条件过滤多个列值,但我想知道是否有更快或更简洁的方法来做到这一点,而无需一列一列地放置,例如对条件或map()
进行分组。
dt = pd.DataFrame(
{
"Num1": [1, -2, 3, -4, 5],
"Num2": [-1, 2, -3, 4, 5],
"Num3": [1, -2, 3, 4, -5],
"Zum1": [1, 2, 3, -4, 5],
"Num5": [1, -2, 3, -4, 5]
}
); dt
# current solution:
dt[(abs(dt["Num1"] > 2) | abs(dt["Num2"] > 2) | abs(dt["Num3"] > 2)) & (dt['Zum1'] > 2)]
# expected outcome
Num1 Num2 Num3 Zum1 Num5
2 3 -3 3 3 3
4 5 5 -5 5 5
如果有多个条件可以使用相同的值进行比较:
dt = dt[dt[['Num1','Num2','Num3']].abs().gt(2).any(1) & (dt['Zum1'] > 2)]
print (dt)
Num1 Num2 Num3 Zum1 Num5
2 3 -3 3 3 3
4 5 5 -5 5 5
或者,如果需要使用Num
过滤所有列,请使用DataFrame.filter
:
dt = dt[dt.filter(like='Num').abs().gt(2).any(1) & (dt['Zum1'] > 2)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.