gpt4 book ai didi

python - 如何在 Pandas 列内的日期范围之间生成随机日期?

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:55 24 4
gpt4 key购买 nike

我有 df 看起来像这样

df:

id dob
1 7/31/2018
2 6/1992

我想生成 88799 个随机日期以进入数据框中的 dob 列,介于 1960-01-011990-12- 之间31 同时保持格式 mm/dd/yyyy 没有时间戳。

我该怎么做?

我试过:

date1 = (1960,01,01)
date2 = (1990,12,31)

for i range(date1,date2):
df.dob = i

最佳答案

我会计算出您的日期范围内有多少天,然后在该范围内选择 88799 个随机整数,最后将其添加为带有 unit='d' 的时间增量到您的最短日期:

min_date = pd.to_datetime('1960-01-01')
max_date = pd.to_datetime('1990-12-31')

d = (max_date - min_date).days + 1

df['dob'] = min_date + pd.to_timedelta(pd.np.random.randint(d,size=88799), unit='d')

>>> df.head()
dob
0 1963-03-05
1 1973-06-07
2 1970-08-24
3 1970-05-03
4 1971-07-03

>>> df.tail()
dob
88794 1965-12-10
88795 1968-08-09
88796 1988-04-29
88797 1971-07-27
88798 1980-08-03

编辑您可以使用.strftime('%m/%d/%Y') 格式化您的日期,但请注意这会显着减慢执行速度:

df['dob'] = (min_date + pd.to_timedelta(pd.np.random.randint(d,size=88799), unit='d')).strftime('%m/%d/%Y')

>>> df.head()
dob
0 02/26/1969
1 04/09/1963
2 08/29/1984
3 02/12/1961
4 08/02/1988
>>> df.tail()
dob
88794 02/13/1968
88795 02/05/1982
88796 07/03/1964
88797 06/11/1976
88798 11/17/1965

关于python - 如何在 Pandas 列内的日期范围之间生成随机日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com