我有一个 pandas 数据框,其中包含数据及其适用的日期时间范围:
data | start_time | end_time
0 | 2020-01-01-00 | 2020-01-01-02
1 | 2020-01-01-05 | 2020-01-01-08
Run Code Online (Sandbox Code Playgroud)
我想将数据转换为每小时的时间序列,因此最终结果如下:
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
Run Code Online (Sandbox Code Playgroud)
我可以用蛮力解决这个问题,但想知道 pandas 数据帧中是否有内置功能我可以探索以帮助实现这一目标。
使用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'))
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |