在给定范围内以 pandas 为单位生成随机日期 [英] Generating random dates within a given range in pandas

查看:102
本文介绍了在给定范围内以 pandas 为单位生成随机日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个自我回答的帖子.一个常见的问题是在给定的开始日期和结束日期之间随机生成日期.

This is a self-answered post. A common problem is to randomly generate dates between a given start and end date.

有两种情况需要考虑:

  1. 带有时间成分的随机日期,和
  2. 没有时间的随机日期

例如,在给定一些开始日期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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆