如何将日期时间间隔转换为数据框?

How can I convert the datetime intervals into a dataframe?

我想制作一个以一周为间隔的日期数据框。我使用以下代码生成了一个日期列表,但是当我想将它变成一个数据框时,我收到了这个错误:

ValueError:未正确调用 DataFrame 构造函数!

你能帮我个忙吗?

import pandas as pd

from datetime import date, datetime, timedelta

def perdelta(start, end, delta):
    curr = start
    while curr < end:
        yield curr
        curr += delta

for dates in perdelta(date(1997, 7, 19), date(2020, 5, 25), timedelta(days=7)):
    OP_dates = pd.DataFrame(dates)


print(OP_dates.head(3))

这里不需要循环:

OP_dates = pd.DataFrame(perdelta(date(1997, 7, 19), date(2020, 5, 25), timedelta(days=7)))

使用循环:

OP_dates = pd.DataFrame()
for dates in perdelta(date(1997, 7, 19), date(2020, 5, 25), timedelta(days=7)):
    OP_dates = pd.DataFrame.append(OP_dates, [dates])

你熟悉pandas.date_range吗?我相信这正是您想要的:

import pandas as pd

date_range = pd.date_range('7-19-1997','5-25-2020',freq='1W')

#if you want the dates as entries
df = pd.DataFrame(date_range)

#or if you want the dates as the index:
df = pd.DataFrame(index=date_range)

看起来有人刚刚使用您的 perdelta 函数发布了一个修复程序,该函数也有效 - 问题是您的 for 循环试图为从 perdelta 产生的每个日期创建一个 DataFrame而不是为 perdelta 产生的日期中的 collection/array 创建一个 DataFrame。

JSYK 你也可以使用 datetimespandas.date_range,而不是我使用的时间字符串。