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

问题描述 投票:0回答:2

我想用一周的时间间隔来制作一个日期的数据框架。我使用了下面的代码来生成一个日期列表,但是当我想把它变成一个数据框时,我得到了这个错误。

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))
python pandas dataframe datetime intervals
2个回答
0
投票

这里不需要循环。

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])

0
投票

你熟悉吗?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 循环试图为每个日期制作一个DataFrame,从 perdelta 而不是为一个集合的日期数组制作一个单一的DataFrame。perdelta.

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

© www.soinside.com 2019 - 2024. All rights reserved.