重新采样大熊猫每天的时间范围

时间:2018-01-12 21:41:35

标签: python pandas

我有一个假期列表,对于每个假期,我想将其缩减到几分钟。我想将它与另一个包含分钟数据的表合并。

holidays.head()看起来像:

day                         holiday
2012-02-20 00:00:00-05:00   1
2012-04-06 00:00:00-04:00   1
2012-05-28 00:00:00-04:00   1
2012-07-04 00:00:00-04:00   1
2012-09-03 00:00:00-04:00   1

所需:

    day                         holiday
    2012-02-20 00:00:00-05:00   1
    2012-02-20 00:01:00-05:00   1
    2012-02-20 00:02:00-05:00   1
    2012-02-20 00:03:00-05:00   1
    2012-02-20 00:04:00-05:00   1
    2012-02-20 00:05:00-05:00   1
..
    2012-04-06 00:00:00-04:00   1
    2012-04-06 00:01:00-04:00   1
    2012-04-06 00:02:00-04:00   1

此:

holidays.resample('T').ffill()

不足以在整个日期范围内制作分钟数据,而不仅仅是假期。

我的尝试:

holidays.resample('D').apply(lambda x: x.resample('T').ffill())

不起作用。

任何人都有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

两个步骤(df是您的假期数据帧)

v=df.day.str[-4].astype(int)+1  
df1=pd.DataFrame({'day':df.day.repeat(v),'holiday':df.holiday.repeat(v)})
df1.day=df1.day.str[:-4]+df1.groupby('day').cumcount().astype(str)+df1.day.str[-3:]
df1
Out[803]: 
                         day  holiday
0  2012-02-20 00:00:00-00:00        1
0  2012-02-20 00:00:00-01:00        1
0  2012-02-20 00:00:00-02:00        1
0  2012-02-20 00:00:00-03:00        1
0  2012-02-20 00:00:00-04:00        1
0  2012-02-20 00:00:00-05:00        1
1  2012-04-06 00:00:00-00:00        1
1  2012-04-06 00:00:00-01:00        1
1  2012-04-06 00:00:00-02:00        1
1  2012-04-06 00:00:00-03:00        1
1  2012-04-06 00:00:00-04:00        1