【问题标题】:Convert date strings with Italian month names to %Y-%m-%d将带有意大利月份名称的日期字符串转换为 %Y-%m-%d
【发布时间】:2020-10-31 15:58:59
【问题描述】:

我想以日期格式转换列(之后)中的日期(之前):

Before                      After

23 Ottobre 2020          2020-10-23
24 Ottobre 2020          2020-10-24
27 Ottobre 2020          2020-10-27
30 Ottobre 2020          2020-10-30
22 Luglio 2020           2020-07-22

我尝试如下:

from datetime import datetime

date = df.Before.tolist()

dtObject = datetime.strptime(date,"%d %m, %y")

dtConverted = dtObject.strftime("%y-%m-%d")

但它不起作用。 你能解释一下怎么做吗?

【问题讨论】:

  • "%y-%m-%d" 肯定不是标题所要求的dd mm yyyy。还有"%d %m, %y"不是Before进来的格式,是'%d %B %Y'。也就是说,你试过pd.to_datetime(df['Before']).dt.strftime('%d-%m-%Y')吗?
  • 查看strftime.org 以获得正确的格式代码 - 无论如何,我认为这里的重点是设置区域设置,以便正确解析非英文月份名称。
  • 非常感谢!将立即对其进行编辑

标签: python pandas datetime


【解决方案1】:

类似于this question,可以在解析前设置语言为意大利语:

import pandas as pd
import locale

locale.setlocale(locale.LC_ALL, 'it_IT')

df = pd.DataFrame({'Before': ['30 Ottobre 2020', '22 Luglio 2020']})

df['After'] = pd.to_datetime(df['Before'], format='%d %B %Y')
# df
#             Before      After
# 0  30 Ottobre 2020 2020-10-30
# 1   22 Luglio 2020 2020-07-22

如果要将“After”列作为 dtype 字符串,请使用 df['After'].dt.strftime('%Y-%m-%d')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 2023-03-08
    • 2021-12-22
    • 1970-01-01
    • 2023-03-09
    • 2013-09-09
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多