如何从数据帧中的字符串中提取日期 [duplicate]

How to extract date from a string within a dataframe [duplicate]

提问人:Lok 提问时间:6/17/2023 最后编辑:TimelessLok 更新时间:6/17/2023 访问量:50

问:

我使用 pandas 读取一个表,并创建了一个名为 df 的数据帧。此数据框中名为“description”的一列包含如下所示的文本和数字:

描述
蛋糕 01/02/1989
信息22031970
一些文字
价值观12345678987

我想从这个字段中提取日期,字段中的所有日期都采用“dd/mm/yyyy”或“ddmmyyyy”格式,并将结果输出为:

enter image description here

我已经试过了,但它在下面给了我,所以不起作用:df['extracted_col'] = df['description'].str.replace('\D+', '')

enter image description here

Python Pandas 数据帧

评论


答:

1赞 Timeless 6/17/2023 #1

一个非常基本的方法是对模式进行硬编码并分别提取每种格式的日期:

df["dd/mm/yyyy"] = df["description"].str.extract(r"(\d{2}/\d{2}/\d{4})", expand=False)

df["ddmmyyyy"] = df["description"].str.extract(r"\b(\d{8})\b", expand=False)

以防万一,我们需要确保掩盖假日期:ddmmyyyy

fake_dates = pd.to_datetime(df["ddmmyyyy"], format="%d%m%Y", errors="coerce").isna()

df["ddmmyyyy"] = df["ddmmyyyy"].mask(fake_dates)

输出:

print(df)

            description  dd/mm/yyyy  ddmmyyyy
0     A CAKE 01/02/1989  01/02/1989       NaN
1  information 22031970         NaN  22031970
2    some text 99889900         NaN       NaN
3    values 12345678987         NaN       NaN