Python循环数据帧中的值并将其更改为二进制值

2024-10-01 02:34:38 发布

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

我在Python中有一个系列y,值为AcceptedRejected。我想为AcceptedRejected创建一个值分别为1和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如下所示:

   y
Accepted
Rejected
Accepted
Accepted
Accepted

期望的输出应该是

dummy
  1
  0
  1
  1
  1

Tags: 数据indataframeforlenifrangeelse
2条回答

您可以使用:

df['dummy'] = df.y.apply(lambda x:  1 if  x == 'Accepted' else 0)

如果要使用for循环:

new_dummy_data = []

for value in df.y.values:
    if value == 'Accepted':
        new_dummy_data.append(1)
    else:
        new_dummy_data.append(0)

df['dummy'] = new_dummy_data

在这里循环是没有必要的,因为慢。更好的方法是通过转换为integer或使用^{}将布尔掩码转换为True/False0,1

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

相关问题 更多 >