因此,我试图编写一些随机生成一年日期的代码。我每个月需要一个30小时的时间。在这30个小时的每个时段中,我需要随机安排120分钟。
我尝试使用for循环和pandas.date_range并很快意识到必须有一种更简单的方法。
def date_generator(self):
datelist = pd.date_range('2021-01-01', periods=525600, freq='T') # Generate Dates
return datelist
这里是一整年的日期列表,其中包含分钟。我只是无法解决上述问题..有什么想法吗?我不是在寻找有人为我编写代码,只是指出正确的方向。谢谢。
答案 0 :(得分:0)
所以我知道这是一个随机的问题,可能对任何人都没有用,但以防万一我自己回答了这个问题。以下代码实现了我想要的功能。
import time
import random
class launch_date_generator():
def __init__(self):
random.seed()
self.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
'November', 'December']
self.months_numerical = range(1, 13)
self.hours = range(7, 18)
self.minutes = range(0, 60)
self.ampm = ['AM', 'PM']
# for n in self.months_numerical:
# print(n)
self.monthsdays = {'January': 31, 'February': 28, 'March': 31, 'April': 30, 'May': 31, 'June': 30, 'July': 31,
'August': 31, 'September': 30, 'October': 31, 'November': 30, 'December': 31}
def date_generator(self):
date_list=[]
date_list_index=0
for x in self.months_numerical:
chosen_month_days= range(1, self.monthsdays[self.months[x-1]])
# print('Chosen Month: ', x)
# print('Chosen month day: ', chosen_month_days[x-1])
starting_day = random.choice(chosen_month_days)
# print('Initial Starting day: ', starting_day)
if abs(starting_day-self.monthsdays[self.months[x-1]]) <= 5:
starting_day=starting_day-5
day_range = range(starting_day, starting_day+5)
for y in day_range:
starting_hour = random.choice(self.hours)
hour_range = range(starting_hour, starting_hour+2)
for z in hour_range:
for k in self.minutes:
date_list.append(str(x)+"-"+str(y)+"-2020"+" "+str(z)+":"+str(k)+":00")
date_list_dataframe = pd.DataFrame(date_list, columns=["Dates"])
return date_list_dataframe
run1=launch_date_generator()
datelist1 = run1.date_generator()
datelist1.to_csv(r'/users/documents/test1.csv')
##################################