如何创建一个包含一年中随机日期和时间的数据框

时间:2019-06-14 16:03:47

标签: python-3.x pandas datetime

因此,我试图编写一些随机生成一年日期的代码。我每个月需要一个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

这里是一整年的日期列表,其中包含分钟。我只是无法解决上述问题..有什么想法吗?我不是在寻找有人为我编写代码,只是指出正确的方向。谢谢。

1 个答案:

答案 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')


##################################