目录
一、标准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元组,但具有可通过属性查找访问的字段。
itertuples和iterrows方法可以使效率更快。这些都是一次产生一行的生成器方法
def iterrows_loop(df):
ans = []
for index,row