Python 根据条件在新列中赋值

Python 根据条件在新列中赋值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧: id name value 1 asd 0.5 2 fgg 0.8 3 hfd 1.5 4 erw 0.5 我必须创建一个新的列accept,这样,如果值大于1.0,将outlier设置为1,否则为0 id name value accept 1 asd 0.5 0 2 fgg 0.8 0 3 hfd 1

我有一个数据帧:

id    name    value
 1    asd      0.5
 2    fgg      0.8
 3    hfd      1.5
 4    erw      0.5
我必须创建一个新的列accept,这样,如果值大于1.0,将outlier设置为1,否则为0

id    name    value   accept
 1    asd      0.5      0
 2    fgg      0.8      0
 3    hfd      1.5      1
 4    erw      0.5      0
我可以使用ItErrors和.loc来完成

for index,row in df.iterrows():
    if row['value']>1:
        df.loc[df.index==row.index,'accept'] = 1
    else:
        df.loc[df.index==row.index,'accept'] = 0
有没有一种更简单的方法可以在不迭代的情况下执行此操作?

条件转换为int-Trues转换为1,false转换为0:

对于其他值,请使用:

条件强制转换为int-True转换为1,False转换为0:

对于其他值,请使用:

只要值介于0和2之间,就使用np.floor+astypeint

df['accept'] = np.floor(df.value).astype(int)
df

   id name  value  accept
0   1  asd    0.5       0
1   2  fgg    0.8       0
2   3  hfd    1.5       1
3   4  erw    0.5       0
只要值介于0和2之间,就使用np.floor+astypeint

df['accept'] = np.floor(df.value).astype(int)
df

   id name  value  accept
0   1  asd    0.5       0
1   2  fgg    0.8       0
2   3  hfd    1.5       1
3   4  erw    0.5       0
df['accept'] = np.floor(df.value).astype(int)
df

   id name  value  accept
0   1  asd    0.5       0
1   2  fgg    0.8       0
2   3  hfd    1.5       1
3   4  erw    0.5       0