如何在python中将日期的天数设置为1-30之间的任意随机数?
Posted
技术标签:
【中文标题】如何在python中将日期的天数设置为1-30之间的任意随机数?【英文标题】:How to set the day number of a date to any random number from 1-30 in python? 【发布时间】:2017-10-05 10:21:37 【问题描述】:您好,我有一个包含日期的 dateSting,比如 2017-10
现在我将这个日期传递给
dateparse = lambda dates: pandas.datetime.strptime(dates, '%Y-%m')
这个函数
它将返回 2017-10-01 作为日期类型,但现在我想在该日期使用 0-31 而不是 01 的任何随机数我怎样才能实现这一点
在一个数组中如何交换所有行的列数据?
谢谢
【问题讨论】:
【参考方案1】:您可以使用random.randrange()
将日期编号添加到您的日期时间:
In [22]: from random import randrange
In [23]: import pandas as pd
In [24]: dateparse = lambda date: pd.datetime.strptime(date + '-'.format(randrange(1,31)), '%Y-%m-%d')
In [25]: dateparse('2017-10')
Out[25]: datetime.datetime(2017, 10, 27, 0, 0)
In [26]: dateparse('2017-10')
Out[26]: datetime.datetime(2017, 10, 17, 0, 0)
In [27]: dateparse('2017-10')
Out[27]: datetime.datetime(2017, 10, 1, 0, 0)
【讨论】:
【参考方案2】:例如使用随机变量
import random
random_number = random.randint(0, 31)
这将使变量 random_number 成为 0 到 31 之间的随机整数
【讨论】:
【参考方案3】:我会这样做:
In [21]: def random_dt(s):
...: d = pd.to_datetime(s, format='%Y-%m')
...: return d + pd.DateOffset(days=random.randint(0, d.daysinmonth-1))
...:
In [22]: random_dt('2017-10')
Out[22]: Timestamp('2017-10-31 00:00:00')
In [23]: random_dt('2017-10')
Out[23]: Timestamp('2017-10-19 00:00:00')
In [24]: random_dt('2017-10')
Out[24]: Timestamp('2017-10-24 00:00:00')
In [25]: random_dt('2017-10')
Out[25]: Timestamp('2017-10-12 00:00:00')
更新: new feauture in Pandas 0.20.1:
to_datetime()
获得了一个新参数origin
,用于定义一个 计算结果时间戳的参考日期 使用指定的特定单位解析数值。 (GH11276, GH11745)
def random_dt(s, periods=1, format='%Y-%m'):
d = pd.to_datetime(s, format=format)
return pd.to_datetime(np.random.randint(0, d.daysinmonth-1, periods),
unit='D', origin=d)
演示:
In [21]: random_dt('2017-10', 4)
Out[21]: DatetimeIndex(['2017-10-05', '2017-10-01', '2017-10-28', '2017-10-05'], dtype='datetime64[ns]', freq=None)
In [22]: random_dt('2017-Jan', periods=3, format='%Y-%b')
Out[22]: DatetimeIndex(['2017-01-14', '2017-01-09', '2017-01-25'], dtype='datetime64[ns]', freq=None)
【讨论】:
以上是关于如何在python中将日期的天数设置为1-30之间的任意随机数?的主要内容,如果未能解决你的问题,请参考以下文章