3

我有一个看起来像这样的数据:

时间 数据
13:45:00 数据 1
13:45:03 数据 2
13:45:14 数据 3
13:45:22 数据 4
13:45:24 数据 5
00:00:03 资料 6
00:00:26 资料 7

数据有超过一天的数据,但它只包含时间但没有日期,日期我必须手动为数据框分配一个新列并将其与时间结合使用

df['DateTime'] = df['Date'].astype('str') + " "  + df['Time'].astype('str')

但是这种方法只能分配一天,我希望程序可以在上午 12 点以上自动添加 1 天。此外,你可以看到从 13:45:00 到 13:45:03,它们之间有 3 秒的时间间隔,我想填补每个时间间隔,并且能够显示每一秒的数据

期望的输出:

约会时间 数据
2021/4/19 13:45:00 数据 1
2021/4/19 13:45:01 数据 1
2021/4/19 13:45:02 数据 1
2021/4/19 13:45:03 数据 2
2021/4/19 13:45:04 数据 2
... ...
2021/4/20 00:00:01 数据 5
2021/4/20 00:00:02 数据 5
2021/4/20 00:00:03 资料 6
2021/4/20 00:00:04 资料 6

我已经尝试过 resample 函数来完成这项工作,但是 resample 总是会在重新采样数据之前进行排序,导致 00:00:03 的行将位于第一行(00:00:03 应该是第二天,但是该函数错误地将它们编译为一天)。有没有办法让熊猫识别这个数据集包含超过一天的数据,如果超过上午 12 点,它会自动加上一天的日期?

4

1 回答 1

2

尝试这个:

idx = pd.to_datetime("2021/04/19 " + df["Time"]) + pd.to_timedelta(
    pd.to_datetime(df["Time"]).diff().lt(pd.Timedelta(seconds=0)).cumsum(), unit="days"
)

dfi = df.set_index(idx)
dfi.resample("S").ffill()

输出:

                         Time    Data
Time                                 
2021-04-19 13:45:00  13:45:00  Data 1
2021-04-19 13:45:01  13:45:00  Data 1
2021-04-19 13:45:02  13:45:00  Data 1
2021-04-19 13:45:03  13:45:03  Data 2
2021-04-19 13:45:04  13:45:03  Data 2
...                       ...     ...
2021-04-20 00:00:22  00:00:03  Data 6
2021-04-20 00:00:23  00:00:03  Data 6
2021-04-20 00:00:24  00:00:03  Data 6
2021-04-20 00:00:25  00:00:03  Data 6
2021-04-20 00:00:26  00:00:26  Data 7

[36927 rows x 2 columns]
于 2021-04-19T03:36:50.810 回答