Pandas 到德国日期格式的日期时间?
Pandas to datetime with German date format?
我有一个数据框,日期如下:
'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')。
这个问题的通用解决方案是什么?
我认为一种可能的解决方案是在转换为日期时间之前使用 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
如果您安装了德语 "locale"(它是 OS 独立问题的依赖项和主题),这里有一个简单明了的方法:
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
我有一个数据框,日期如下:
'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')。
这个问题的通用解决方案是什么?
我认为一种可能的解决方案是在转换为日期时间之前使用 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
如果您安装了德语 "locale"(它是 OS 独立问题的依赖项和主题),这里有一个简单明了的方法:
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