【问题标题】:Convert Object Text To Time将对象文本转换为时间
【发布时间】:2020-04-09 05:31:06
【问题描述】:

我有两列 FirstLast(两个 dtype 都是对象)我想将它们转换为时间变量,我们称之为 First_timeLast_time

Current Dataframe

ID  First   Last
1    7:30a      4p
2    10a       6p
3    7p      3:30a

Desired Dataframe

ID  First   Last
1    07:30    16:00
2    10:00    18:00
3    19:00    03:30

我在这里找到了一个有用的站点https://www.journaldev.com/23365/python-string-to-datetime-strptime,并尝试应用以下代码DF['hour'] = pd.to_datetime(DF['Last'], format='%H').dt.hour

但是,我收到以下错误,我可以看出它与数字旁边的文字有关。这是一个很长的错误,所以我只会用红色发布:

TypeError: Unrecognized value type: <class 'str'>
ValueError                                Traceback (most recent call last)
ValueError: unconverted data remains: p

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    重新阅读您发布的链接。该表清楚地描述了可接受的格式。 4p 不是这些格式中的任何一种。但是,4pm 其中之一,即 %p 规范。开始

    DF['hour'] = pd.to_datetime(DF['Last']+['m'], format='%H%p').dt.hour
    

    然后从那里开始工作。

    【讨论】:

    • 不错的 pd.to_datetime(df['First'] + ['m'],format='%H%p').dt.time 对我有用,不确定为什么我必须将 m 包含在一个列表中,否则我会得到一个 numpy is nat ufunc 错误。
    • 我的错误也是 - 您必须将其添加为列表元素,因为这与矢量化操作支持的类型一致。我已经更新了我的答案以匹配。
    • 我想出了同样的pd.to_datetime(df['start'].add('m'), format='%I%p').dt.hour
    • 啊我的错误在这里 - 我忘了提到一些最后的时间与分钟 4:30 一起显示,因此我收到一个错误:ValueError: time data '4:30pm' does not匹配格式“%H%p”(匹配)。另外,由于也有 AM 时间,我将如何添加合并 '%H%a?'
    • 所有这些都包含在您在问题中引用的文档中。你在哪里坚持呢?
    猜你喜欢
    • 2015-12-19
    • 2020-06-25
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2019-06-23
    相关资源
    最近更新 更多