有人能告诉我为什么这两个陈述(for循环和理解)会返回两个不同的答案吗。我以为他们是一样的,只是写声明的方式不同。你知道吗
使用的数据:
Top152['% Renewable']
Country
China 19.754910
United States 11.570980
Japan 10.232820
United Kingdom 10.600470
Russian Federation 17.288680
Canada 61.945430
Germany 17.901530
India 14.969080
France 17.020280
South Korea 2.279353
Italy 33.667230
Spain 37.968590
Iran 5.707721
Australia 11.810810
Brazil 69.648030
For循环:
def answer_ten():
Top15 = answer_one()
Top152 = Top15.copy()
for x in Top152['% Renewable']:
if x >= Top152['% Renewable'].median():
Top152['HighRenew'] = 1
else:
Top152['HighRenew'] = 0
return Top152['HighRenew']
answer_ten()
输出:
Country
China 1
United States 1
Japan 1
United Kingdom 1
Russian Federation 1
Canada 1
Germany 1
India 1
France 1
South Korea 1
Italy 1
Spain 1
Iran 1
Australia 1
Brazil 1
理解力:
def answer_ten():
Top15 = answer_one()
Top152 = Top15.copy()
Top152['HighRenew'] = [1 if x >= Top152['% Renewable'].median() else 0 for x in Top152['% Renewable']]
return Top152['HighRenew']
answer_ten()
输出:
Country
China 1
United States 0
Japan 0
United Kingdom 0
Russian Federation 1
Canada 1
Germany 1
India 0
France 1
South Korea 0
Italy 1
Spain 1
Iran 0
Australia 0
Brazil 1
第二种方法是编辑向量。而for循环将保存它(在后台)以避免不必要的编辑!你知道吗
更好的方法是将
boolean mask
转换为int
,因为pandas
使用非常快的矢量化函数最快:对于循环,可以使用^{} 使用非常慢的解决方案,但更快的是第一个解决方案:
时间安排:
在每个迭代步骤中设置整列(向量):
请尝试这种矢量化方法:
因此,您的功能可以实现如下:
相关问题 更多 >
编程相关推荐