简体   繁体   English

从 python 中的日期范围创建 dataframe

[英]Create a dataframe from a date range in python

Given an interval from two dates, which will be a Python TimeStamp.给定两个日期的间隔,这将是一个 Python 时间戳。

create_interval('2022-01-12', '2022-01-17', 'Holidays')

Create the following dataframe:创建以下 dataframe:

date日期 interval_name间隔名称
2022-01-12 00:00:00 2022-01-12 00:00:00 Holidays假期
2022-01-13 00:00:00 2022-01-13 00:00:00 Holidays假期
2022-01-14 00:00:00 2022-01-14 00:00:00 Holidays假期
2022-01-15 00:00:00 2022-01-15 00:00:00 Holidays假期
2022-01-16 00:00:00 2022-01-16 00:00:00 Holidays假期
2022-01-17 00:00:00 2022-01-17 00:00:00 Holidays假期

If it can be in a few lines of code I would appreciate it.如果它可以在几行代码中,我将不胜感激。 Thank you very much for your help.非常感谢您的帮助。

If you're open to using Pandas, this should accomplish what you've requested如果您愿意使用 Pandas,这应该可以满足您的要求

import pandas as pd

def create_interval(start, end, field_val):
    #setting up index date range
    idx = pd.date_range(start, end)
    #create the dataframe using the index above, and creating the empty column for interval_name
    df = pd.DataFrame(index = idx, columns = ['interval_name'])
    #set the index name
    df.index.names = ['date']
    #filling out all rows in the 'interval_name' column with the field_val parameter
    df.interval_name = field_val
    return df

create_interval('2022-01-12', '2022-01-17', 'holiday')

I hope I coded exactly what you need.我希望我编码的正是你所需要的。

import pandas as pd

def create_interval(ts1, ts2, interval_name):
    ts_list_dt = pd.date_range(start=ts1, end=ts2).to_pydatetime().tolist()
    ts_list = list(map(lambda x: ''.join(str(x)), ts_list_dt))
    d = {'date': ts_list, 'interval_name': [interval_name]*len(ts_list)}
    df = pd.DataFrame(data=d)
    return df

df = create_interval('2022-01-12', '2022-01-17', 'Holidays')
print(df)

output: output:

         date             interval_name
0  2022-01-12 00:00:00      Holidays
1  2022-01-13 00:00:00      Holidays
2  2022-01-14 00:00:00      Holidays
3  2022-01-15 00:00:00      Holidays
4  2022-01-16 00:00:00      Holidays
5  2022-01-17 00:00:00      Holidays

If you want DataFrame without Index column, use df = df.set_index('date') after creating DataFrame df = pd.DataFrame(data=d) .如果您想要 DataFrame 没有索引列,请在创建DataFrame df = pd.DataFrame(data=d)后使用df = df.set_index('date') ) 。 And then you will get:然后你会得到:

    date             interval_name      
2022-01-12 00:00:00      Holidays
2022-01-13 00:00:00      Holidays
2022-01-14 00:00:00      Holidays
2022-01-15 00:00:00      Holidays
2022-01-16 00:00:00      Holidays
2022-01-17 00:00:00      Holidays

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM