我正在尝试从 pandas 列中提取任何格式的日期(日期是较长字符串的一部分)。
我找到了这个答案,它在 pandas 之外执行此操作,但我不确定如何使用它在 pandas 专栏中执行此操作。
日期可以采用多种格式,例如:
footballer, born October 1989
footballer, born 1900s
footballer, born 29 December 1987
Brazilian footballer, born 1983
31/02/1901
16 May 2019
Run Code Online (Sandbox Code Playgroud)
是否可以将任何日期格式和部分日期作为具有日期类型的 pandas 列?
使用链接答案中的方法:
import dateutil.parser as dparser
s.apply(lambda x: dparser.parse(x,fuzzy=True).strftime('%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)
虽然dparser当然不能应对所有可能性:在示例数据中,您必须更改footballer, born 1900s为footballer, born 1900's,否则解析会抱怨第二个必须在 0..59 中
如果需要异常处理,则必须定义常规函数,因为 lambda 无法处理 try/ except:
def myparser(x):
try:
return dparser.parse(x,fuzzy=True)
except:
return None
s.apply(lambda x: myparser(x))
Run Code Online (Sandbox Code Playgroud)
这将插入NaT错误日期的值(或者如果您愿意,您可以提供“默认日期”):
0 1989-10-12
1 NaT
2 1987-12-29
3 1983-07-12
4 NaT
5 2019-05-16
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
992 次 |
| 最近记录: |