在给定范围内以 pandas 为单位生成随机日期 [英] Generating random dates within a given range in pandas
本文介绍了在给定范围内以 pandas 为单位生成随机日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是一个自我回答的帖子.一个常见的问题是在给定的开始日期和结束日期之间随机生成日期.
This is a self-answered post. A common problem is to randomly generate dates between a given start and end date.
有两种情况需要考虑:
- 带有时间成分的随机日期,和
- 没有时间的随机日期
例如,在给定一些开始日期2015-01-01
和结束日期2018-01-01
的情况下,如何使用熊猫在此范围之间采样N个随机日期?
For example, given some start date 2015-01-01
and an end date 2018-01-01
, how can I sample N random dates between this range using pandas?
推荐答案
我们可以利用datetime64
只是重新命名的int64
这一事实,将@ akilat90的方法提高大约两倍(以@coldspeed的基准).观看广播:
We can speed up @akilat90's approach about twofold (in @coldspeed's benchmark) by using the fact that datetime64
is just a rebranded int64
hence we can view-cast:
def pp(start, end, n):
start_u = start.value//10**9
end_u = end.value//10**9
return pd.DatetimeIndex((10**9*np.random.randint(start_u, end_u, n, dtype=np.int64)).view('M8[ns]'))
这篇关于在给定范围内以 pandas 为单位生成随机日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文