Jul*_*rec 6 python datetime pandas
Pandas 非常擅长解析英文字符串日期:
In [1]: pd.to_datetime("11 January 2014 at 10:50AM")
Out[1]: Timestamp('2014-01-11 10:50:00')
Run Code Online (Sandbox Code Playgroud)
我想知道当字符串使用另一种语言(例如法语)时,是否有一种简单的方法可以使用 Pandas 来做同样的事情:
In [2]: pd.to_datetime("11 Janvier 2016 à 10:50")
Run Code Online (Sandbox Code Playgroud)
值错误:未知的字符串格式
理想情况下,有一种方法可以直接在pd.read_csv.
有一个名为dateparser的模块能够处理多种语言,包括法语、俄语、西班牙语、荷兰语等 20 多种。它还可以识别时区缩写等内容。
让我们确认它适用于单个日期:
In [1]: import dateparser
dateparser.parse('11 Janvier 2016 à 10:50')
Out[1]: datetime.datetime(2016, 1, 11, 10, 50)
Run Code Online (Sandbox Code Playgroud)
继续解析这个test_dates.csv文件:
Date Value
0 7 janvier 1983 10
1 21 décembre 1986 21
2 1 janvier 2016 12
Run Code Online (Sandbox Code Playgroud)
您实际上可以dateparser.parse用作解析器:
In [2]: df = pd.read_csv('test_dates.csv',
parse_dates=['Date'], date_parser=dateparser.parse)
print(df)
Out [2]:
Date Value
0 1983-01-07 10
1 1986-12-21 21
2 2016-01-01 12
Run Code Online (Sandbox Code Playgroud)
显然,如果您需要在加载数据框后执行此操作,您始终可以使用 apply 或 map:
# Using apply (6.22 ms per loop)
df.Date = df.Date.apply(lambda x: dateparser.parse(x))
# Or map which is slightly slower (7.75 ms per loop)
df.Date = df.Date.map(dateparser.parse)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2244 次 |
| 最近记录: |