要遍歷數據幀(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