首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期和时间数据对象组合中的日期时间错误

日期和时间数据对象组合中的日期时间错误
EN

Stack Overflow用户
提问于 2020-05-04 17:31:04
回答 1查看 50关注 0票数 0

当我想将两个数据列合并到一个DateTime对象中时,我对Python有一个问题。初始日期列是字符串格式,小时是整数(1,2,3,....,23,24),新的一天从1开始(而不是24)。我使用命令smartmeter_data['Datetime']=pd.to_datetime(smartmeter_data['Date']) + smartmeter_data['Time'].astype('timedelta64[h]')添加一个包含日期和时间的新列。然而,我得到了非常奇怪的结果:

代码语言:javascript
复制
...
19  01/09/2019 2019-01-09 20:00:00
20  01/09/2019 2019-01-09 21:00:00
21  01/09/2019 2019-01-09 22:00:00
22  01/09/2019 2019-01-09 23:00:00
23  01/09/2019 2019-01-10 00:00:00
24  02/09/2019 2019-02-09 01:00:00
25  02/09/2019 2019-02-09 02:00:00
26  02/09/2019 2019-02-09 03:00:00
...

在那里,日期01/09/2019被更改为DateTime对象2019-01-10 00:00:00,这是错误的,在我的图形上做了一个非常奇怪的“跳转”。我想要的输出是:

代码语言:javascript
复制
...
19  01/09/2019 2019-01-09 20:00:00
20  01/09/2019 2019-01-09 21:00:00
21  01/09/2019 2019-01-09 22:00:00
22  01/09/2019 2019-01-09 23:00:00
23  01/09/2019 2019-02-09 00:00:00
24  02/09/2019 2019-02-09 01:00:00
25  02/09/2019 2019-02-09 02:00:00
26  02/09/2019 2019-02-09 03:00:00
...

我试图通过谷歌找到解决方案,但没有成功。有人知道如何解决这个问题吗?

当你能帮忙的时候,我会非常感激,使用日期和时间是我工作的基础。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 19:06:49

一天有24小时,所以如果将24小时的时间加到日期,则日期将更改为第二天。但是,为什么不直接减去1来得到正确的时间增量(0-23而不是1-24)?例如。

代码语言:javascript
复制
import pandas as pd

smartmeter_data = pd.DataFrame({'Date': ['01/09/2019', '01/09/2019', '01/09/2019',
                                         '01/09/2019', '01/09/2019', '02/09/2019',
                                         '02/09/2019', '02/09/2019'],
                                'Time': [20, 21, 22, 23, 24, 1, 2, 3]})

smartmeter_data['Datetime'] = (pd.to_datetime(smartmeter_data['Date'], format='%d/%m/%Y') +
                               (smartmeter_data['Time'] - 1).astype('timedelta64[h]'))

# smartmeter_data
#          Date  Time            Datetime
# 0  01/09/2019    20 2019-09-01 19:00:00
# 1  01/09/2019    21 2019-09-01 20:00:00
# 2  01/09/2019    22 2019-09-01 21:00:00
# 3  01/09/2019    23 2019-09-01 22:00:00
# 4  01/09/2019    24 2019-09-01 23:00:00
# 5  02/09/2019     1 2019-09-02 00:00:00
# 6  02/09/2019     2 2019-09-02 01:00:00
# 7  02/09/2019     3 2019-09-02 02:00:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61598173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档