<p>熊猫解决方案呢?</p>
<pre><code>number = [21, 44, 31, 553, 63, 35]
access = ["denied", "Try Again", "Retry", "Accepted", "Error", "Success"]
#create DataFrame
df = pd.DataFrame({'number':number, 'access':access})
#create boolean masks
m1 = df['number'].isin(range(20,30))
m2 = df['number'].isin(range(40,50)) & (df['access'] == 'Try Again')
m3 = df['number'].isin(range(60,100)) & (df['access'] == 'Error')
#create new column by conditions
df['Access Message'] = np.select([m1, m2,m3], ['Revolt','Strike','Exception'], default='')
print (df)
access number Access Message
0 denied 21 Revolt
1 Try Again 44 Strike
2 Retry 31
3 Accepted 553
4 Error 63 Exception
5 Success 35
</code></pre>
<hr/>
<p>在您的解决方案中,可以在循环中将输出附加到<code>list</code>,最后由构造函数创建<code>DataFrame</code>:</p>
<pre><code>number = [21, 44, 31, 553, 63, 35]
access = ["denied", "Try Again", "Retry", "Accepted", "Error", "Success"]
def mapping(number, access):
out = []
checkNumberAndAccess = zip(number, access)
for number, access in checkNumberAndAccess:
if number in range(20,30):
out.append('Revolt')
elif (number in range(40,50)) and (access == 'Try Again'):
out.append('Strike')
elif (number in range(60,100)) and (access == 'Error'):
out.append('Exception')
else:
#add default value
out.append('')
return out
access = mapping(number, access)
df = pd.DataFrame({'Access Message': access, 'Number': number})
print (df)
Access Message Number
0 Revolt 21
1 Strike 44
2 31
3 553
4 Exception 63
5 35
</code></pre>