Python 如何在数据帧中插值分组时间序列
我的数据类型为Python 如何在数据帧中插值分组时间序列,python,pandas,Python,Pandas,我的数据类型为pd.DataFrame,如下所示: type date sum A Jan-1 1 A Jan-3 2 B Feb-1 1 B Feb-2 3 B Feb-5 6 任务是为每种类型构建一个连续的时间序列(缺少的日期应该用0填充) 预期结果是: type date sum A Jan-1 1 A Jan-2 0 A Jan-3 2 B Feb-1 1 B Feb-2 3 B Feb-3
pd.DataFrame
,如下所示:
type date sum
A Jan-1 1
A Jan-3 2
B Feb-1 1
B Feb-2 3
B Feb-5 6
任务是为每种类型构建一个连续的时间序列(缺少的日期应该用0填充)
预期结果是:
type date sum
A Jan-1 1
A Jan-2 0
A Jan-3 2
B Feb-1 1
B Feb-2 3
B Feb-3 0
B Feb-4 0
B Feb-5 6
使用pandas
或其他Python工具可以做到这一点吗
真正的数据集有数百万行。首先必须将日期更改为日期时间,并将该列放入索引中以利用重新采样,然后才能将日期转换回其原始格式
# change to datetime
df['date'] =pd.to_datetime(df.date, format="%b-%d")
df = df.set_index('date')
# resample to fill in missing dates
df1 = df.groupby('type').resample('d')['sum'].asfreq().fillna(0)
df1 = df1.reset_index()
# change back to original date format
df1['date'] = df1.date.dt.strftime('%b-%d')
输出
首先必须将日期更改为datetime,并将该列放入索引中以利用重采样,然后才能将日期转换回其原始格式
# change to datetime
df['date'] =pd.to_datetime(df.date, format="%b-%d")
df = df.set_index('date')
# resample to fill in missing dates
df1 = df.groupby('type').resample('d')['sum'].asfreq().fillna(0)
df1 = df1.reset_index()
# change back to original date format
df1['date'] = df1.date.dt.strftime('%b-%d')
输出
非常感谢你的评论。我得到了这个错误类型错误:仅对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但在使用
重采样时得到了一个“RangeIndex”实例,您必须拥有错误消息告诉您的这三种索引之一。如果您运行了上面的前两行代码,那么您必须具有DateTimeIndex。非常感谢您的评论。我得到了这个错误类型错误:仅对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但在使用重采样时得到了一个“RangeIndex”实例,您必须拥有错误消息告诉您的这三种索引之一。如果运行上面的前两行代码,则必须具有DateTimeIndex。