【问题标题】:Parse Text to DateTime then Convert Output from 12Hour Am/Pm to 24 Hour in Excel/R/Python将文本解析为日期时间,然后在 Excel/R/Python 中将输出从上午/下午 12 小时转换为 24 小时
【发布时间】:2018-09-20 09:10:50
【问题描述】:

我有大约 1000 行以这种格式记录的数据: 2018 年 4 月 2 日 23:14:17

我还有大约 1000 条这样的记录: 2018 年 3 月 27 日晚上 10:42:26

我的第一个问题是 Excel 将它们识别为字符串(本文档的原始编译器从其他地方转储了一堆 DateTimes)。

我的第二个问题是,即使我们成功将格式转换为“日期时间”,我也需要在 24 小时而不是 12 小时内将格式更改为 DD:MM:YYYY hh:mm:ss时间。

非常感谢您对此提供的帮助或关于如何改写问题的建议。标记 Excel、R 和 Python,因为这些是我手头的工具。

【问题讨论】:

  • 一个懒惰的建议 - 您可以尝试使用 dateparser 模块进行快速修复。它会比定制的解决方案慢,但不会对您的数据集大小产生巨大影响。不是在电脑上做出具体的回答。

标签: python r excel


【解决方案1】:

在 R 中,包 lubridate 是您所需要的。下面是一些示例代码:

> require(lubridate)
# examples from the question statement.
> test_date_1 = "2 Apr 2018, 23:14:17"
> test_date_2 = "Mar 27, 2018, 10:42:26 PM"

# parse the date.
> date1 = dmy_hms(test_date_1)
> date2 = mdy_hms(test_date_2)

# show the date
> print(date1)
[1] "2018-04-02 23:14:17 UTC"
> print(date2)
[1] "2018-03-27 22:42:26 UTC"

【讨论】:

    【解决方案2】:

    如果您更喜欢纯 R 语言,请使用 strptime:

    strptime("2 Apr 2018, 23:14:17", "%d %b %Y, %H:%M:%S")
    [1] "2018-04-02 23:14:17 PDT"
    strptime("Mar 27, 2018, 10:42:26 PM", "%b %d, %Y, %H:%M:%S")
    [1] "2018-03-27 10:42:26 PDT"
    

    【讨论】:

    • 非常感谢,谢谢!我只能选择一个,我不能以我的经验水平“投票”,但我只想说谢谢你向我展示了另一种方法。
    【解决方案3】:

    如果您在数据框中有 1000 条记录,以下示例将让您大致了解如何将日期固定在 R(使用 lubridate)中。时间也将转换为 24 小时格式。

    用于演示的测试数据框:

    df <- data.frame(date = rep("2 Apr 2018, 23:14:17", 10))
    temp <- data.frame(date = rep("Mar 27, 2018, 10:42:26 PM", 10))
    df <- rbind(df, temp)
    df
    

    修正日期:

    library(lubridate)
    
    dmy <- dmy_hms(df$date)
    mdy <- mdy_hms(df$date) 
    
    mdy[is.na(mdy)] <- dmy[is.na(mdy)]
    
    df$date <- mdy
    

    请参阅解决方案here 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 2019-10-19
      相关资源
      最近更新 更多