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

查看:48
本文介绍了在 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,我如何使用熊猫?

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 因此我们可以进行视图转换:

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天全站免登陆