【发布时间】:2019-12-10 23:23:24
【问题描述】:
想象一下,我有一些 pandas 数据框,如下所示:
creationDate
188080 2019-08-01 21:28:39+03:00
188081 2019-08-01 21:33:13+03:00
188082 2019-08-01 21:39:53+03:00
188083 2019-08-01 21:43:24+03:00
188084 2019-08-01 21:48:17+03:00
188085 2019-08-01 21:52:56+03:00
188086 2019-08-01 21:58:27+03:00
188087 2019-08-01 22:10:50+03:00
188088 2019-08-01 22:14:58+03:00
188089 2019-08-01 22:17:43+03:00
我想创建一个名为density 的新列。对于每一行,它的意思是“在当前单元格creationDate 之后和当前单元格creationDate + 1 hour 之前有多少行”
我有一个矢量化函数,但在我的数据集(大约 1.500.000 行)上,它的运行速度不是很快(在我的笔记本电脑上花了大约 5 分钟)。
def get_density(date, distance_in_minute):
start_datetime = date
end_datetime = date + np.timedelta64(distance_in_minute, 'm')
return df.loc[
(df['creationDate'] >= str(start_datetime)) & (df['creationDate'] < str(end_datetime))
].shape[0]
np_get_density = np.vectorize(lambda x: get_density(x, 60))
df['density'] = np_get_density(df['creationDate'])
如何优化此查询?提前致谢!
【问题讨论】:
标签: python pandas dataframe optimization