要遍历数据帧(DataFrame)中的行,可以使用以下方式:
iteritems() - 迭代(key,value) 对
iterrows() - 将行迭代为(索引,系列) 对
itertuples() - 以namedtuples的形式迭代行
可以看出循环执行的速度是最慢的,iterrows()针对Pandas的dataframe进行了优化,相比直接循环有显著提升。apply()方法也是在行之间进行循环,但由于利用了类似Cython的迭代器的一系列全局优化,其效率要比iterrows高很多。NumPy arrays的矢量化运行速度最快,其次是Pandas series矢量化。由于矢量化是同时作用于整个序列的,可以节省更多的时间,相比使用标量操作更好,NumPy使用预编译的C代码在底层进行优化,同时也避免了Pandas series操作过程中的很多开销,例如索引、数据类型等等,因此,NumPy arrays的操作要比Pandas series快得多。
具体可以参照 https://www.yiibai.com/pandas/python_pandas_iteration.html
网友评论