Jupyter Notebook中多条件过滤DataFrame失效问题求助
Jupyter Notebook中多条件过滤DataFrame失效问题求助
嗨,我来帮你捋捋这个问题~你现在的核心问题是逻辑运算符用反啦!
你想要的是「排除任何满足ICU=1 或者 WINDOW="ABOVE_12"的行」,换句话说,最终保留的行必须同时满足「ICU不等于1」并且「WINDOW不等于"ABOVE_12"」。而你之前用的|(逻辑或),会把只要满足两个条件中任意一个的行都留下来,这完全和你的需求背道而驰了。
给你两种正确的写法,选哪个都可以:
- 直接用逻辑与
&,明确保留同时符合两个“不满足排除条件”的行:
data = df[(df['ICU'] != 1) & (df['WINDOW'] != "ABOVE_12")]
- 用取反符号
~结合逻辑或|,更直观对应你“排除任一条件”的描述:
data = df[~((df['ICU'] == 1) | (df['WINDOW'] == "ABOVE_12"))]
这个写法的意思是:先找出所有「ICU=1 或 WINDOW=ABOVE_12」的行,然后用~取反,留下的就是你需要的、不满足任一排除条件的行。
举个小例子帮你理解:假设某一行ICU=1但WINDOW不是ABOVE_12,你原来的代码里(df['ICU'] !=1)是False,(df['WINDOW'] !=ABOVE_12)是True,False | True结果为True,所以这行会被错误保留;而用正确的&的话,False & True是False,这行就会被排除,正好符合你的要求。
备注:内容来源于stack exchange,提问作者alip
相关产品推荐
相关产品推荐

