日期时间格式问题

时间:2020-12-23 23:09:23

标签: python pandas datetime

所以...我再次遇到日期时间格式的问题。这是因为IDK为什么亚马逊的数据库不断地更改日期格式并且每次都是一个麻烦。今天我请求您帮助将此字符串转换为日期时间对象。我就是找不到合适的格式。

"ene" 就像 Jan,但是是西班牙语。问题是即使 locale.getlocale() 设置为西班牙语,它也不会转换它(但它确实转换了英文日期字符串)。我也试过将“ene”替换为“Jan”,但也不起作用。我仍然收到“时间数据 '2 ene. 2020 9:54:46' 与格式 '%d %b. %Y %H:%M:%S' 不匹配”错误。

data={'fecha/hora': {0: '2 ene. 2020 9:54:46',
  1: '2 ene. 2020 10:18:51',
  2: '2 ene. 2020 10:19:18',
  3: '2 ene. 2020 11:58:04',
  4: '2 ene. 2020 15:56:51'},
 'Id. de liquidación': {0: 12493053261,
  1: 12493053261,
  2: 12493053261,
  3: 12493053261,
  4: 12493053261}}
df=pd.DataFrame(data)
df["fecha"]=prueba.apply(lambda x: datetime.datetime.strptime(x["fecha/hora"],"%d %b. %Y %H:%M:%S"),axis=1)

如果你们知道任何教程来帮助我解决这个问题,我会很高兴看到它。老实说,我正在关注文档,但我无法弄清楚如何有效地使用 datetime 对象。也因为我收到的每个数据库在不同的语言中都有不同的格式。

此外,原始日期格式为 tz "gmt-8"。我删除了它,但如果有办法处理它会更好。

data={'fecha/hora': {0: '2 ene. 2020 9:54:46 GMT-8',
  1: '2 ene. 2020 10:18:51 GMT-8',
  2: '2 ene. 2020 10:19:18 GMT-8',
  3: '2 ene. 2020 11:58:04 GMT-8',
  4: '2 ene. 2020 15:56:51 GMT-8'},
 'Id. de liquidación': {0: 12493053261,
  1: 12493053261,
  2: 12493053261,
  3: 12493053261,
  4: 12493053261}}
df=pd.DataFrame(data)

提前致谢!

2 个答案:

答案 0 :(得分:0)

我建议你使用像箭头这样的库。它允许使用指定一个本地(默认情况下它使用“en_US”)来使用,它也可以与您 PC 中的本地不同,如果您需要解析多个本地日期时间格式,则可以更改代码。您可以在他们的 documentation 上找到有关箭头的更多信息。它使用简单,为您提供了许多不同的功能和丰富的使用指南。

这是一个关于如何解析您指定的西班牙日期时间的示例:

import arrow  # installed via pip

df["fecha"]=df.apply(lambda x: arrow.get(x["fecha/hora"], "D MMM. YYYY H:mm:ss", locale="es_ES").datetime, axis=1)

答案 1 :(得分:0)

事实证明,'.' 是缩写的西班牙月份的一部分。所以你不必再次声明它。 您可以在以下位置查看值:

datetime.date(2020, 1, 1).strftime('%b')

它给你 ene.。 因此,如果您将日期格式更改为:

datetime.datetime.strptime('2 ene. 2020 10:18:51', "%d %b %Y %H:%M:%S")

而不是:

datetime.datetime.strptime('2 ene. 2020 10:18:51', "%d %b. %Y %H:%M:%S")

这对我有用。

此外,pandas 确实有一个 to_datetime() 函数,您可以将其用于一系列的日期时间转换。它使用与 datetime 模块相同的格式字符串。因此,这将实现您的目标:

df["fecha"] = pd.to_datetime(df["fecha/hora"], format="%d %b %Y %H:%M:%S")