【发布时间】:2017-06-10 23:41:04
【问题描述】:
我有一个 DataFrame,我想为每一行计算有多少其他行与给定条件匹配(例如,C 列中的值小于该行的值的行数)。遍历每一行太慢(我有大约 1B 行),尤其是当列 dtype 是日期时间时,但这是可以在带有标记为 C 的列的 DataFrame df 上运行的方式:
df['newcol'] = 0
for row in df.itertuples():
df.loc[row.Index, 'newcol'] = len(df[df.C < row.C])
有没有办法将其矢量化?
谢谢!
【问题讨论】:
-
循环缓慢的主要原因似乎是因为我正在更新我正在迭代的同一个表。将结果存储在 dict 中,然后将其与原始数据帧合并,大大提高了性能。
-
请用该解决方案回答您自己的问题,以帮助未来的读者。