gpt4 book ai didi

python - 在 df 列上迭代不同的正则表达式模式

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:13 25 4
gpt4 key购买 nike

我有一个包含文本的 df 列,我正在尝试从中提取不同的日期模式。

例如这个df1:

<index>    text    
0 My birthday is 10/23/89.
1 Christmas is on December 25th.
2 Thanksgiving of 11/2008 was the best.

所需的输出是第 3 列,称为 dates:

<index>    text                                  dates
0 My birthday is 10/23/89. 10/23/89
1 Christmas is on December 25. 25 December
2 Thanksgiving of 11/2008 was the best. 11/2008

为了我们的第一次约会,我写了我的第一个重新表达,就像这样:

df1['日期'] = (df1['文本'].str.findall(r'\d{1,2}[/-]\d{1,2}[/-]\d{2 ,4}'))

这就是我卡住的地方。

我不知道/不明白如何编写多个 re 表达式而不是继续覆盖 df1['dates'] 列中已有的内容。

我想运行下一个表达式:

df1['dates'] = df1['text'].str.findall(r'(?:\d{1,2})?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* (?:\d{1,2}, )?\d{4}')

查看 df['dates'] 列是否为空然后尝试下一个重新表达式的最佳方法是什么?

我今天早些时候问过这个问题,它被标记为可能与 this 重复但我认为 DeepSpace 认为我比实际聪明得多,我的问题比他回答的问题要基础得多。

最佳答案

你可以试试

df['dates'] = df['text'].str.extract('.*?(\d+/\d+/?\d*).*?')


text dates
0 My birthday is 10/23/89. 10/23/89
1 Christmas is 12/25. 12/25
2 Thanksgiving of 11/2008 was the best. 11/2008

添加测试用例:

df['text'].str.extract('.*?(\d+/\d+/?\d*).*?|\
(January|February|March|April|May|June|July|August|September|October|November|December \d+)', expand = False)\
.fillna('').sum(1)

你得到

0       10/23/89
1 December 25
2 11/2008

关于python - 在 df 列上迭代不同的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com