Python调包侠——Pandas循环提速

目录

一、标准for循环

二、Pandas 内置函数: iterrows ()

三、Pandas的 .apply()方法

四、Pandas向量化

五、Numpy向量化

六、总结


一、标准for循环

采用for循环遍历每一行,iloc来确定该列值,在数据量较大的情况下,iloc本身耗时较高,同时for遍历使得效率非常低,对于iloc的改进可使用 df.at来代替,对于for循环改进参考下面几个点。

def tradition_loop(df):
    for row in range(0, len(df)):

        if (df['HomeTeam'].iloc[row] == 1) :
            df['Draws'].iloc[row] = 'Draw'

        else:
            df['Draws'].iloc[row] = 'No_Game'

二、Pandas 内置函数: iterrows ()

iterrows()为DataFrame中的每一行产生(index,series)这样的元组。它以索引对的形式遍历DataFrame,以Series的形式遍历感兴趣的列,使得它比标准循环更快。但是iterrows()不能跨行保存dtype。这意味着,如果你在DataFrame dtypes上使用iterrows(),可以更改它,但这会导致很多问题。一定要保存dtypes的话,你还可以使用itertuples()。

itertuples为每一行产生一个namedtuple,并且行的索引值作为元组的第一个元素。nametuple是Python的collections模块中的一种数据结构,其行为类似于Python元组,但具有可通过属性查找访问的字段。

itertuplesiterrows方法可以使效率更快。这些都是一次产生一行的生成器方法

def iterrows_loop(df):
    ans = []
    for index,row 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值