You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas .loc统计BAD=1且DELINQ非空的行数?

Pandas实现对应SQL的非空+条件计数逻辑

你需要对应SQL语句:

select count(DELINQ) from DATA where BAD = 1 and DELINQ is not null;

的Pandas实现,可通过在.loc的筛选条件中显式添加非空判断贴合SQL逻辑,以下是完善后的代码:

原代码

import numpy as np
import pandas as pd
data=pd.read_csv("hmeq_reduced.csv")
print('BAD: ',data.loc[data.BAD == 1,"DELINQ"].count())
print('Not Bad: ',data.loc[data.BAD == 0,"DELINQ"].count())

完善后的代码

import numpy as np
import pandas as pd
data=pd.read_csv("hmeq_reduced.csv")
# 显式添加DELINQ非空条件,多个条件用&连接,每个条件需加括号
print('BAD (DELINQ非空): ',data.loc[(data.BAD == 1) & (data.DELINQ.notna()), "DELINQ"].count())
print('Not Bad (DELINQ非空): ',data.loc[(data.BAD == 0) & (data.DELINQ.notna()), "DELINQ"].count())

关键说明

  • Pandas中判断非空可用Series.notna()方法,或全局的pd.notna(Series)函数,二者效果一致
  • 多个筛选条件必须用&(逻辑与)连接,且每个条件需单独加括号(避免运算符优先级导致逻辑错误)
  • 原代码的.count()方法本身会自动排除空值(和SQL的count(列名)行为一致),但显式添加非空条件更贴合你熟悉的SQL语法逻辑

样本数据集(hmeq_reduced.csv)

BAD DELINQ
1   0
1   2
1   0
1   
0   0
1   0
1   2
1   0
1   2
1   0
1   
1   1
1   0
0   0
1   1
1   1
1   6
1   
1   0
0   0
1   1
1   0
1   0
1   2
1   0
1   0
0   0
1   0
1   2
0   0

运行结果

BAD (DELINQ非空):  22
Not Bad (DELINQ非空):  5

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:20:46