【发布时间】:2018-12-03 17:12:16
【问题描述】:
我有一个熊猫系列,其中包含 12 小时格式的类似日期时间的字符串,但没有 am/pm 缩写。它涵盖了整个月的数据:
40 01/01/2017 11:51:00
41 01/01/2017 11:51:05
42 01/01/2017 11:55:05
43 01/01/2017 11:55:10
44 01/01/2017 11:59:30
45 01/01/2017 11:59:35
46 02/01/2017 12:00:05
47 02/01/2017 12:00:10
48 02/01/2017 12:13:20
49 02/01/2017 12:13:25
50 02/01/2017 12:24:50
51 02/01/2017 12:24:55
52 02/01/2017 12:33:30
Name: TS, dtype: object
(318621,) # shape
我的目标是将其转换为日期时间格式,以便获得适当的 unix 时间戳值,并与其他日期时间数据进行比较/算术运算,这次是 24 小时格式。所以我已经尝试过了:
pd.to_datetime(df.TS, format = '%d/%m/%Y %I:%M:%S') # %I for 12h format
哪个输出我:
64 2017-01-02 00:46:50
65 2017-01-02 00:46:55
66 2017-01-02 01:01:00
67 2017-01-02 01:01:05
68 2017-01-02 01:05:00
但是上午/下午的信息没有被考虑在内。我知道,作为一项规则,am/pm 首先必须在字符串中指定,然后可以使用 dt.dt.strptime() 或 pd.to_datetime() em> 使用 %p 指示符解析它们。
所以我想知道是否有其他方法可以通过 datetime 或 pandas datetime 模块来处理这个问题?或者,我是否必须在解析之前手动添加缩写“am/pm”?
【问题讨论】:
-
是否应该一直解析为 PM?
-
@CallCentreExecutive 如果您参考示例中的时间戳,则可以。我说'仍然解析'是因为我认为格式调用中的 %I 会考虑 am/pm 信息,但我知道有 %p 来指示它们。但必须在转换前的str中指定。
-
那么为什么不给你的日期添加一个“PM”后缀并解析它们呢?
-
@CallCentreExecutive 我可以,但我正在处理一系列 300 000 个日期时间 str (一个月的数据,基本上每 5 秒一个日期时间)。所以我必须编写一个函数来指示何时添加“AM”/“PM”后缀?解析时有没有办法识别?
-
@CallCentreExecutive 我想我误解了你的问题。我的 pandas 系列包含 300 000 个我刚才提到的 12 小时格式的日期时间字符串,每行频率为 5 秒。所以有上午和下午的混合。数据不应总是被解析为 PM。
标签: python-3.x python-datetime