如何解决熊猫检测过一天日期
我有一个看起来像这样的数据:
时间 | 数据 |
---|---|
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 |
我尝试过重新采样函数来完成这项工作,但重新采样将始终在重新采样数据之前进行排序,导致 00:00:03 的行将位于第一行(00:00:03 应该用于第二天,但该函数错误地将它们编译为一天)。有没有办法让 Pandas 识别出这个数据集包含超过一天的数据,并在超过 12 点时自动加上一天?
解决方法
试试这个:
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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。