2024-10-03 00:22:03 发布
网友
我想用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)
现在我想创造一个条件,说:
伪代码:
我的预期结果是:
你的数据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
输出:
将^{}与^{}和^{}一起使用:
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,并通过^{}只设置非缺失行:
True/False
1/0
你的数据d与你的结果不同,我认为你的意思是1如果大于阈值,而不是相反,所以我有这样一个:
输出:
^{pr2}$将^{} 与^{} 和^{} 一起使用:
另一种解决方案是将} 只设置非缺失行:
^{pr2}$True/False
转换为1/0
映射的mask to integer,并通过^{相关问题 更多 >
编程相关推荐