根据Python中其他列的条件创建新列

2024-10-03 00:22:03 发布

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

我想用Python做一些与this oneR用户的问题非常相似的事情。我的意图是创建一个新列,它的值是根据其他列的条件创建的

例如:

d = {'year': [2010, 2011,2013, 2014], 'PD': [0.5, 0.8, 0.9, np.nan], 'PD_thresh': [0.7, 0.8, 0.9, 0.7]}
df_temp = pd.DataFrame(data=d)

现在我想创造一个条件,说:

伪代码:

^{pr2}$

我的预期结果是:

^{3}$

Tags: 用户dataframedfnpnanthis条件事情
2条回答

你的数据d与你的结果不同,我认为你的意思是1如果大于阈值,而不是相反,所以我有这样一个:

y = [a if np.isnan(a) else 1 if a>=b else 0 for a,b in zip(df_temp.PD,df_temp.PD_thresh)]
df_temp['y_pseudo'] = y

输出:

^{pr2}$

^{}^{}^{}一起使用:

m1 = df_temp['PD'].isna()
m2 = df_temp['PD'].ge(df_temp['PD_thresh'])

df_temp['y_pseudo'] = np.select([m1, m2], [np.nan, 1], default=0)
print (df_temp)
   year   PD  PD_thresh  y_pseudo
0  2010  0.5        0.7       0.0
1  2011  0.6        0.8       0.0
2  2013  0.9        0.9       1.0
3  2014  NaN        0.7       NaN

另一种解决方案是将True/False转换为1/0映射的mask to integer,并通过^{}只设置非缺失行:

^{pr2}$

相关问题 更多 >