如何将日期时间间隔转换为数据框?
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 你也可以使用 datetimes
和 pandas.date_range
,而不是我使用的时间字符串。
我想制作一个以一周为间隔的日期数据框。我使用以下代码生成了一个日期列表,但是当我想将它变成一个数据框时,我收到了这个错误:
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 你也可以使用 datetimes
和 pandas.date_range
,而不是我使用的时间字符串。