如何使用fillna()在其他列中满足某些条件时在列中插补值

2024-04-24 08:41:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经计算了信用卡历史记录有NaN值时的计数。在

贷方历史记录为NaN时的输出:

Self_Employed
Yes  532
No   32

Married
No   398
Yes  21

对于数值,我计算了所有列的平均值

当信用历史记录为NaN时,非数值的输出:

^{pr2}$

现在如何在这些情况下使用fillna():

案例1:当自雇=Y且已婚=N时,信用记录应为0

案例2:当自营职业=N且AppliantIncome>;20000;信用记录应为1

案例3:自雇=Y,已婚=N,申请时间>2000;信用记录应为1

另外,在某些情况下使用fillna()不是很明显时,我们可以使用透视表计算中值,然后使用fillna()进行插补吗?在

提前谢谢。在


Tags: noself历史记录记录情况nan信用卡案例
1条回答
网友
1楼 · 发布于 2024-04-24 08:41:52

使用^{},如果所有条件都是False,则输出由参数default定义:

from  itertools import  product
c = ['Self_Employed','Married','ApplicantIncome']
df =  pd.DataFrame(list(product(list('NY'), list('NY'), [10000, 30000])), 
                   columns=c)


m1 = (df.Self_Employed == 'Y') & (df.Married == 'N')
m2 = (df.Self_Employed == 'N') & (df.ApplicantIncome > 20000)
m3 = m1 & (df.ApplicantIncome > 20000)

df['Credit_History'] = np.select([m1, m2, m3], [0,1,1], default=2)
print (df)
  Self_Employed Married  ApplicantIncome  Credit_History
0             N       N            10000               2
1             N       N            30000               1
2             N       Y            10000               2
3             N       Y            30000               1
4             Y       N            10000               0
5             Y       N            30000               0
6             Y       Y            10000               2
7             Y       Y            30000               2

但如果要替换为条件,则添加^{}

^{pr2}$

相关问题 更多 >