我正在尝试从 pandas 列中提取任何格式的日期(日期是较长字符串的一部分)。
我找到了 this回答是在 pandas 之外执行的,但我不确定如何在 pandas 专栏中使用它来执行此操作。
日期可以有多种格式,例如:
footballer, born October 1989
footballer, born 1900s
footballer, born 29 December 1987
Brazilian footballer, born 1983
31/02/1901
16 May 2019
是否可以将任何日期格式和部分日期作为具有日期类型的 pandas 列?
最佳答案
使用链接答案中的方法:
import dateutil.parser as dparser
s.apply(lambda x: dparser.parse(x,fuzzy=True).strftime('%Y-%m-%d'))
尽管 dparser
当然不能应对所有可能性:在示例数据中,您必须将 footballer, born 1900s
更改为 footballer, born 1900 的
,否则解析会提示秒必须在 0..59 中
如果您需要异常处理,您必须定义一个常规函数,因为 lambda 无法处理 try/except:
def myparser(x):
try:
return dparser.parse(x,fuzzy=True)
except:
return None
s.apply(lambda x: myparser(x))
这将为错误的日期插入 NaT
值(或者您可以根据需要提供“默认日期”):
0 1989-10-12
1 NaT
2 1987-12-29
3 1983-07-12
4 NaT
5 2019-05-16
关于python - 从 Pandas 列中提取任何格式的日期(日期是较长字符串的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57013942/