Python 如何将一组概率转换为0和1?

Python 如何将一组概率转换为0和1?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我给出了一个包含两列“y”和“proba”的数据集y'有两个类标签“0”和“1”,而“proba”是概率 我必须创建一个列表'y_hat',如果我的'proba'小于0.5,那么我将附加0或1。我已经编写了代码: y_hat = [0 if (df_5a['proba']<0.5) else 1] y_hat=list(map(λx:0,如果x为1,(df_5a['proba'])您可以使用: (df['proba'] >= .5).astype(int) 假设您的数据集如下所示

我给出了一个包含两列“y”和“proba”的数据集y'有两个类标签“0”和“1”,而“proba”是概率

我必须创建一个列表'y_hat',如果我的'proba'小于0.5,那么我将附加0或1。我已经编写了代码:

y_hat = [0 if (df_5a['proba']<0.5) else 1]
y_hat=list(map(λx:0,如果x为1,(df_5a['proba'])您可以使用:

(df['proba'] >= .5).astype(int)

假设您的数据集如下所示:

data= {'y':[0,0,1,0,1,0],
    'proba': [0.2,0.3,0.25,0.8,0.9,0.15]}

df_5a= pd.DataFrame(data)
df_5a
输出:

    y   proba
0   0   0.20
1   0   0.30
2   1   0.25
3   0   0.80
4   1   0.90
5   0   0.15
[0]
[0, 0, 0, 1, 1, 0]
您的代码不起作用,因为正如错误所表明的,它在您具体检查的内容方面是不明确的

例如,如果您只想将条件应用于第1行(
['proba'][0]
),则通过添加其索引,您的代码可以正常工作:

y_hat = [0 if (df_5a['proba'][0] <0.5) else 1]
y_hat
因此,尽管我发现@Gopal Gautam的答案是正确的,但下面是我对另一种方法的建议,使用该方法可以迭代每一行:

y_hat=[]
for row in df_5a.itertuples(index=True, name='Pandas'):
  if row.proba < 0.5:
    y_hat.append(0)
  else:
    y_hat.append(1)

print(y_hat)

您好,欢迎使用SO!虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请阅读,我认为这里是最佳解决方案。
y_hat=[]
for row in df_5a.itertuples(index=True, name='Pandas'):
  if row.proba < 0.5:
    y_hat.append(0)
  else:
    y_hat.append(1)

print(y_hat)
[0, 0, 0, 1, 1, 0]