【发布时间】:2019-05-01 21:42:48
【问题描述】:
我有以下 DataFrame 总结了我在数据集中遇到的不同情况:
import pandas as pd
import numpy as np
df = pd.DataFrame({'date': [20120302, 20141017, 20150215],
'time': [764, 17002, 110000517]}, dtype=np.uint64)
我在df.time 列中看到的数字是类似单位的,随着时间的推移而增加,直到接近240000000(例如,最后一个条目可能是235959281)。如您所想,它们加起来是 24 小时(一天)。
我想将两列合并形成一个 date_time 格式的 datetime64[ns] 列,以便我可以使用 pandas 进一步分析。
问题:
我可以加入它们(即将它们转换为 str),但我没有得到我想要的确切日期时间格式。当我加入他们时,我会得到这些值,例如:
20120302764
2014101717002
20150215110000517
我想得到:
2012-03-02 00:00:00.764
2014-10-17 00:00:17.002
2015-02-15 11:00:00.517
就我而言:
尝试使用
pd.to_datetime()直接转换失败,即使提供'%Y-%m-%d %H:%M:%S.%f'格式。我可以将
timedelta64[ns]对象与datetime64[ns]连接起来形成最后一列。但是,使用 timedelta 转换的单位并没有给出真正的小时、分钟、秒和毫秒。
问题是: ¿如何从这些“类似单位”的数量中获取小时、分钟、秒和毫秒,以便我可以将其加入日期列以形成完整的 date_time?
【问题讨论】:
-
"甚至提供 '%Y-%m-%d %H:%M:%S.%f' 格式。"因为格式字符串应该反映 current 格式。所以像
%Y%m%d这样的date列。想想看,你告诉数据框如何读取你给它的完全无上下文的数字系列。 -
@roganjosh True Rogan,说的方式不是最好的。我完全理解您的意思:即使提供良好的格式,有时格式不匹配并失败。感谢您的快速回答。
标签: python pandas datetime timestamp time-series