代码之家  ›  专栏  ›  技术社区  ›  ViSa

如何从Pandas的列中提取日期?

  •  0
  • ViSa  · 技术社区  · 1 年前

    我正在努力 提取物 只有 日期 从a column(Result) a dataframe 日期只能从2000年及以后开始,但日期的格式可以是任何格式,包括日期时间。

    我想要的只是约会。

    有没有一种简单的方法可以用一些简单的正则表达式代码来实现?

    数据集示例:

    date_extract_df = pd.DataFrame({
    'Result':[': XYZ',': 39 YRS/M',': Self',': HOME COLLECTION',': 10593974',
               ': 012408030006',': 03/08/2024',': 03/Aug/2024 11:50 AM',': 03/Aug/2024 03:24 PM',
                ' ','31.80','15'],
     'Unit':['dfd','dfdfd','tytyt','03/08/2024','fgf','tyt','xcx','ere','sds','03/Aug/2024 03:24 PM',
            '4545','5656']
    })
    
    Expected Result:
    
        0
        1
        2
        3
        4
        5
        6 03/08/2024
        7 03/Aug/2024
        8 03/Aug/2024
        9 03/Aug/2024
        10
        11
    

    我不擅长Regex,并尝试了以下代码:

    date_extract_df.Result.str.extract(r"^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$")

    有没有一种方法可以找出列中包含日期的行,然后过滤该行以提取日期?

    我尝试了类似的方法:

    datetime.datetime.isoformat(date_check['Result'][9])

    date_check['Result'].apply(lambda x: datetime.datetime.isoformat(x))

    1 回复  |  直到 1 年前
        1
  •  0
  •   Prayson W. Daniel    1 年前

    减去纪元时间(第6行),这应该可以完成任务

    pd.to_datetime(date_extract_df["Result"].str.replace(": ",""), errors="coerce")
    

    更深入地说,你可以使用第三方工具,如 dateparser 覆盖更多病例