【发布时间】:2020-07-27 21:03:40
【问题描述】:
我的数据框中有超过 500,000 行和许多类似的“for”循环,这导致我的代码需要一个多小时才能完成计算。是否有更有效的方法来编写以下“for”循环,以便运行得更快:
col_26 = []
col_27 = []
col_28 = []
for ind in df.index:
if df['A_factor'][ind] > df['B_factor'][ind]:
col_26.append('Yes')
col_27.append('No')
col_28.append(df['A_value'][ind])
elif df['A_factor'][ind] < df['B_factor'][ind]:
col_26.append('No')
col_27.append('Yes')
col_28.append(df['B_value'][ind])
else:
col_26.append('')
col_27.append('')
col_28.append(float('nan'))
【问题讨论】:
-
一个包含 500,000 个项目的
for循环在不到一秒的时间内运行。所以不是for循环导致了问题。 -
如果在 Pandas 或 NumPy 中完成,事情可能会快得多...
-
使用列操作。
-
您能提供更多信息吗?更多代码?如果您要创建许多 500,000 长度的列表,您可能会使用大量内存,这会导致速度变慢,这不是 cpu 问题。