python - 从 Pandas 列中提取任何格式的日期(日期是较长字符串的一部分)

标签 python pandas

我正在尝试从 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/

相关文章:

python - Pytorch RuntimeError : [enforce fail at CPUAllocator. cpp :56] posix_memalign(&data, gAlignment, nbytes) == 0. 12 vs 0

python - 如何用其他数据框中的值替换 pandas 中的整个单元格?

python - 反转交叉表或频率表

python - 如何根据另一个 torch 张量中的索引更改 torch 张量中的某些值?

python - 检查列中的每个值在另一列 pandas 中是否只有一个对应的值

python - Namedtuple '_source' 方法在使用 'exec' 引用后停用

python-3.x - Pandas 获取 Cell 中每个元组的第一个元素

python - 将列表转换为数据框

python - 基于多索引求和列值

python - numpy 数组的时髦行为