python - 如何排除一个列丢失和另一个具有特定值的条件?
问题描述
事情是这样的,我有一个名为 df 的数据框,如下所示:
id value
NaN 10
NaN 0
ATT 0
ARS 0
ABB 10
我想在 id 缺失且值为零时排除所有行。
我想得到这个:
id value
NaN 10
ATT 0
ARS 0
ABB 10
我试过了:
df[pd.isna(df['id']) & df['value']==0]
但它不起作用,并且不断排除比要求更多的行。
解决方案
您需要更改(反转逻辑) - 选择所有不带NaN
s 或不带 s 的行0
,也因为优先级运算符()
为第二个条件添加:
df = df[df['id'].notna() | (df['value']!=0)]
print (df)
id value
0 NaN 10
2 ATT 0
3 ARS 0
4 ABB 10
或使用Series.ne
, then()
不是必需的:
df = df[df['id'].notna() | df['value'].ne(0)]
print (df)
id value
0 NaN 10
2 ATT 0
3 ARS 0
4 ABB 10
或者可以反转原始掩码:
df = df[~(df['id'].isna() & (df['value']==0))]
print (df)
id value
0 NaN 10
2 ATT 0
3 ARS 0
4 ABB 10
推荐阅读
- angular - 带有按钮和 *ngif 的 RouterLink
- .net-core - Rebus 优雅关机
- here-api - 我设置了 hellomap 示例并收到以下错误
- mysql - 如何使用 SQL 计算累计支付 MRR?
- java - Java jackson - 更新 json 中的数组
- python - 如何使用样式表更改 PyQt 按钮的位置?
- python - 如何使用get方法在elasticsearch python中搜索
- android - 更改复选框阴影的颜色
- java - 带有 maven 的 Selenium 无法检测到它在没有 maven 的情况下能够检测到的 webelements
- sql-server - SQL 错误:此实例上只允许使用 SQL 服务器提供程序