【问题标题】:Pandas to datetime with German date format?熊猫到日期时间与德国日期格式?
【发布时间】:2020-02-21 19:36:48
【问题描述】:

我有一个包含以下日期的数据框:

'Jan 2019', 'Feb 2019', 'Mär 2019', 'Apr 2019', 'Mai 2019', 'Jun 2019', 'Jul 2019', 'Aug 2019', 'Sep 2019', 'Okt 2019', 'Nov 2019', 'Dez 2019'

我正在尝试使用将列转换为日期时间

pd.to_datetime(df.month, format='%b%Y', errors='ignore')

不幸的是,to_datetime 重新调整对象而不是日期时间。我相信这是因为日期的德语拼写(例如“Mär 2019”而不是“Mar 2019”或“Dez 2019”而不是“Dec 2019”)。

对于这个问题有什么好的通用解决方案?

【问题讨论】:

标签: python-3.x pandas datetime multilingual


【解决方案1】:

如果您安装了德语“语言环境”(它依赖于操作系统并且是单独问题的主题),这是一种简单而干净的方法:

import pandas as pd
import locale

a = ['Jan 2019', 'Feb 2019', 'Mär 2019', 'Apr 2019', 'Mai 2019', 
     'Jun 2019', 'Jul 2019', 'Aug 2019', 'Sep 2019', 'Okt 2019', 'Nov 2019', 'Dez 2019']

df = pd.DataFrame({'month':a})

locale.setlocale(locale.LC_ALL, 'de_DE')
df['month'] = pd.to_datetime(df['month'], format='%b %Y')

输出:

        month
0  2019-01-01
1  2019-02-01
2  2019-03-01
3  2019-04-01
4  2019-05-01
5  2019-06-01
6  2019-07-01
7  2019-08-01
8  2019-09-01
9  2019-10-01
10 2019-11-01
11 2019-12-01

【讨论】:

    【解决方案2】:

    我认为一种可能的解决方案是在转换为日期时间之前使用Series.replace

    a = ['Jan 2019', 'Feb 2019', 'Mär 2019', 'Apr 2019', 'Mai 2019', 
         'Jun 2019', 'Jul 2019', 'Aug 2019', 'Sep 2019', 'Okt 2019', 'Nov 2019', 'Dez 2019']
    
    df = pd.DataFrame({'month':a})
    
    d = {'Mär':'Mar', 'Mai':'May','Okt':'Oct','Dez':'Dec'}
    df['month']=pd.to_datetime(df['month'].replace(d, regex=True), format='%b %Y', errors='coerce')
    print (df)
            month
    0  2019-01-01
    1  2019-02-01
    2  2019-03-01
    3  2019-04-01
    4  2019-05-01
    5  2019-06-01
    6  2019-07-01
    7  2019-08-01
    8  2019-09-01
    9  2019-10-01
    10 2019-11-01
    11 2019-12-01
    

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 2020-06-04
      • 2020-11-16
      • 2022-10-12
      • 2018-06-29
      • 2021-02-17
      • 2014-02-23
      相关资源
      最近更新 更多