擅长:python、mysql、java
<p>在这里循环是没有必要的,因为慢。更好的方法是通过转换为<code>integer</code>或使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd4>}</a>将布尔掩码转换为<code>True/False</code>到<code>0,1</code>:</p>
<pre><code>df['dummy'] = (df['y']=='Approved').astype(int)
</code></pre>
<hr/>
<pre><code>df['dummy'] = np.where(df['y']=='Approved', 1, 0)
</code></pre>
<hr/>
<p>您的解决方案应该更改(循环缓慢的解决方案):</p>
<pre><code>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
</code></pre>