我在Python中有一个y系列,值分别是AcceptedRejected我想为Accepted创建一个值为1、为Rejected创建一个值为0的新数据帧。
我试图遍历y的值并写入一个新的dfdummy。到目前为止我的进步是

dummy=pd.DataFrame()
i=0

for i in range(0,len(y)):
    if y[i]=='Approved':
        dummy[i:]==1
    else:
        dummy[i:]==0

但我觉得我偏离了轨道。有人能帮我吗?
这个系列看起来是这样的:
   y
Accepted
Rejected
Accepted
Accepted
Accepted

期望的输出应该是
dummy
  1
  0
  1
  1
  1

最佳答案

这里不需要循环,因为很慢最好是通过转换为True/Falses或使用0,1将布尔掩码转换为integernumpy.where

df['dummy'] =  (df['y']=='Approved').astype(int)

df['dummy'] =  np.where(df['y']=='Approved', 1, 0)

您的解决方案应该更改(循环缓慢的解决方案):
print (df)

0  Accepted
1  Rejected
2  Accepted
3  Accepted
4  Accepted

out = []
for i in range(0,len(df)):
    if df.loc[i, 'y']=='Accepted':
        out.append(1)
    else:
        out.append(0)

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

df['dummy'] = out
print (df)
          y  dummy
0  Accepted      1
1  Rejected      0
2  Accepted      1
3  Accepted      1
4  Accepted      1

09-25 17:43