在Python中,iterrows()
是 pandas 库中 DataFrame 对象的一个方法,用于逐行迭代DataFrame。然而,iterrows()
在处理大数据集时可能会比较慢,因为它在每次迭代时都会生成一个Series对象,并且涉及到Python层面的循环,这通常不是最优的选择。
iterrows()
可以显著提高数据处理速度。apply()
, groupby()
, agg()
等。为什么使用 iterrows()
循环会慢?
iterrows()
是基于Python的for循环实现的,效率较低。import pandas as pd
# 假设有一个DataFrame df
df = pd.DataFrame({
'A': range(1, 100001),
'B': range(100001, 200001),
'C': range(200001, 300001)
})
# 不使用iterrows(),而是使用向量化操作
df['D'] = df['A'] + df['B'] * 2 - df['C'] / 3
# 使用apply()函数进行逐行操作
def custom_function(row):
return row['A'] + row['B'] * 2 - row['C'] / 3
df['D'] = df.apply(custom_function, axis=1)
import numpy as np
# 将DataFrame转换为NumPy数组
A = df['A'].values
B = df['B'].values
C = df['C'].values
# 进行计算
D = A + B * 2 - C / 3
# 将结果赋值回DataFrame
df['D'] = D
通过上述方法,可以有效地优化具有多个列引用的 iterrows()
循环,提高数据处理的速度和效率。
领取专属 10元无门槛券
手把手带您无忧上云