2024-04-25 19:39:59 发布
网友
你好,我有一个约会,日期是2017-10
现在我把这个日期传给 dateparse = lambda dates: pandas.datetime.strptime(dates, '%Y-%m') 此函数 它将返回2017-10-01作为一个日期类型,但现在我想有任何随机数从0-31,而不是01在该日期我怎么能做到这一点
dateparse = lambda dates: pandas.datetime.strptime(dates, '%Y-%m')
在数组中,如何交换所有行的列数据?你知道吗
谢谢
我会这样做:
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() has gained a new parameter, origin, to define a reference date from where to compute the resulting timestamps when parsing numerical values with a specific unit specified. (GH11276, GH11745)
to_datetime()
origin
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)
您可以使用random.randrange()将日数添加到日期时间:
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)
例如,使用随机变量
import random random_number = random.randint(0, 31)
这将使变量random\u数成为0到31之间的随机整数
我会这样做:
更新:new feauture in Pandas 0.20.1:
演示:
您可以使用
random.randrange()
将日数添加到日期时间:例如,使用随机变量
这将使变量random\u数成为0到31之间的随机整数
相关问题 更多 >
编程相关推荐