我有一个熊猫数据框,其中包含数据和适用的日期时间范围:
data | start_time | end_time
0 | 2020-01-01-00 | 2020-01-01-02
1 | 2020-01-01-05 | 2020-01-01-08
我想将数据转换为每小时的时间序列,因此最终结果如下:
data | time
0 | 2020-01-01-00
0 | 2020-01-01-01
0 | 2020-01-01-02
1 | 2020-01-01-05
1 | 2020-01-01-06
1 | 2020-01-01-07
1 | 2020-01-01-08
我可以通过这种方式来蛮力,但是我想知道在熊猫数据框中是否有内置功能可以探索以实现这一目标。
使用pandas.date_range
和pandas.DataFrame.explode
:
df['time'] = df.apply(lambda x: pd.date_range(x['start_time'], x['end_time'], freq='1H'), 1)
print(df.explode('time'))
输出:
data start_time end_time time
0 0 2020-01-01-00 2020-01-01-02 2020-01-01 00:00:00
0 0 2020-01-01-00 2020-01-01-02 2020-01-01 01:00:00
0 0 2020-01-01-00 2020-01-01-02 2020-01-01 02:00:00
1 1 2020-01-01-05 2020-01-01-08 2020-01-01 05:00:00
1 1 2020-01-01-05 2020-01-01-08 2020-01-01 06:00:00
1 1 2020-01-01-05 2020-01-01-08 2020-01-01 07:00:00
1 1 2020-01-01-05 2020-01-01-08 2020-01-01 08:00:00
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句