Python 中的 While 循环替代方案

我正在处理一个巨大的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


精慕HU
浏览 316回答 1
1回答

HUH函数

不要在 Pandas 中使用循环,与矢量化解决方案相比,它们很慢 - 将布尔掩码转换为整数,转换为:astype True, False1, 0dataframe = pd.DataFrame({'A':list('abcdef'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'B':[4,5,4,5,5,4],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'C':[7,8,9,4,2,3],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'D':[1,3,5,7,1,0],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'E':list('aaabbb'),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'F':[5,3,6,9,2,4],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'G':[5,3,6,9,2,4]})a = 5dataframe['new'] = (dataframe.iloc[:,5] >= a).astype(int)print (dataframe)&nbsp; &nbsp;A&nbsp; B&nbsp; C&nbsp; D&nbsp; E&nbsp; F&nbsp; G&nbsp; new0&nbsp; a&nbsp; 4&nbsp; 7&nbsp; 1&nbsp; a&nbsp; 5&nbsp; 5&nbsp; &nbsp; 11&nbsp; b&nbsp; 5&nbsp; 8&nbsp; 3&nbsp; a&nbsp; 3&nbsp; 3&nbsp; &nbsp; 02&nbsp; c&nbsp; 4&nbsp; 9&nbsp; 5&nbsp; a&nbsp; 6&nbsp; 6&nbsp; &nbsp; 13&nbsp; d&nbsp; 5&nbsp; 4&nbsp; 7&nbsp; b&nbsp; 9&nbsp; 9&nbsp; &nbsp; 14&nbsp; e&nbsp; 5&nbsp; 2&nbsp; 1&nbsp; b&nbsp; 2&nbsp; 2&nbsp; &nbsp; 05&nbsp; f&nbsp; 4&nbsp; 3&nbsp; 0&nbsp; b&nbsp; 4&nbsp; 4&nbsp; &nbsp; 0如果要覆盖第 7 列:a = 5dataframe.iloc[:,6] = (dataframe.iloc[:,5] >= a).astype(int)print (dataframe)&nbsp; &nbsp;A&nbsp; B&nbsp; C&nbsp; D&nbsp; E&nbsp; F&nbsp; G0&nbsp; a&nbsp; 4&nbsp; 7&nbsp; 1&nbsp; a&nbsp; 5&nbsp; 11&nbsp; b&nbsp; 5&nbsp; 8&nbsp; 3&nbsp; a&nbsp; 3&nbsp; 02&nbsp; c&nbsp; 4&nbsp; 9&nbsp; 5&nbsp; a&nbsp; 6&nbsp; 13&nbsp; d&nbsp; 5&nbsp; 4&nbsp; 7&nbsp; b&nbsp; 9&nbsp; 14&nbsp; e&nbsp; 5&nbsp; 2&nbsp; 1&nbsp; b&nbsp; 2&nbsp; 05&nbsp; f&nbsp; 4&nbsp; 3&nbsp; 0&nbsp; b&nbsp; 4&nbsp; 0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python