我想用一周的时间间隔来制作一个日期的数据框架。我使用了下面的代码来生成一个日期列表,但是当我想把它变成一个数据框时,我得到了这个错误。
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
循环试图为每个日期制作一个DataFrame,从 perdelta
而不是为一个集合的日期数组制作一个单一的DataFrame。perdelta
.
JSYK你也可以使用 datetimes
与 pandas.date_range
,而不是我使用的时间字符串。