为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中的 While 循环替代方案

Python 中的 While 循环替代方案

精慕HU 2021-06-11 14:20:45
我正在处理一个巨大的dataframe并尝试根据另一列中的条件创建一个新列。现在,我有一个大的while-loop,这个计算需要太多时间,有没有更简单的方法来做?随着lambda例如?:def promo(dataframe, a):      i=0    while i < len(dataframe)-1:        i=i+1        if dataframe.iloc[i-1,5] >= a:            dataframe.iloc[i-1,6] = 1        else:            dataframe.iloc[i-1,6] = 0    return dataframe
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

不要在 Pandas 中使用循环,与矢量化解决方案相比,它们很慢 - 将布尔掩码转换为整数,转换为:astype True, False1, 0


dataframe = pd.DataFrame({'A':list('abcdef'),

                   'B':[4,5,4,5,5,4],

                   'C':[7,8,9,4,2,3],

                   'D':[1,3,5,7,1,0],

                   'E':list('aaabbb'),

                   'F':[5,3,6,9,2,4],

                   'G':[5,3,6,9,2,4]

})


a = 5

dataframe['new'] = (dataframe.iloc[:,5] >= a).astype(int)

print (dataframe)

   A  B  C  D  E  F  G  new

0  a  4  7  1  a  5  5    1

1  b  5  8  3  a  3  3    0

2  c  4  9  5  a  6  6    1

3  d  5  4  7  b  9  9    1

4  e  5  2  1  b  2  2    0

5  f  4  3  0  b  4  4    0

如果要覆盖第 7 列:


a = 5

dataframe.iloc[:,6] = (dataframe.iloc[:,5] >= a).astype(int)

print (dataframe)

   A  B  C  D  E  F  G

0  a  4  7  1  a  5  1

1  b  5  8  3  a  3  0

2  c  4  9  5  a  6  1

3  d  5  4  7  b  9  1

4  e  5  2  1  b  2  0

5  f  4  3  0  b  4  0


查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号