python:如果出现else-result错误,则返回值不正确



我的程序如下:

=====================python程序=====================

print(df.AMT.describe())
if (df.AMT.all() >= 100.000000): 
df.BN_YN = 1
else:
df.BN_YN = 0
df.groupby("BN_YN").size()

===============python程序结果===============

count   850834.000000
mean       122.405618
std        607.791592
min          0.000000
25%         17.119406
50%         59.414306
75%        110.213483
max     215742.068175
Name: AMT, dtype:float64

BN_YN
0     850834
dtype: int64

如您所见,AMT的值超过100000然而,BN_YN没有1。

如何同时得到1/0的结果?

IIUC:使用以下numpywhere将是解决方案

df['BN_YN'] = df.apply(lambda x: np.where(x['AMT'] >= 100, 1, 0), axis=1)

也可以这样写:

df = df.assign(BN_YN=df.apply(lambda x: np.where(x['AMT'] >= 100, 1, 0), axis=1))

最新更新