Skip to main content
 首页 » 编程设计

python之Pandas 在数据框中搜索日期格式和非日期格式

2025年05月04日20Renyi-Fan

这是我的场景:

我需要搜索 . . .假设以下 3 个术语:“苹果”、“糖果”和“时间”。

我还需要搜索“MM/dd/yyyy”中的任何值。

我需要搜索整个数据框列“A”列,以查找所有这 4 个内容。

假设我有一个如下所示的数据框:

df4 
 
            A           Q           R           S 
0       Apple       chair         red     english 
1      orange        desk        blue      german 
2        pear     monitor      yellow     spanish 
3       Apple       chair      purple     english 
4  10/01/2016  05/02/2004  05/05/2014  06/20/2018 
5  02/20/2017  01/01/2017  07/07/2017  02/04/2004 

我期望的输出是这样的:

            A           Q           R           S 
0       Apple       chair         red     english 
3       Apple       chair      purple     english 
4  10/01/2016  05/02/2004  05/05/2014  06/20/2018 
5  02/20/2017  01/01/2017  07/07/2017  02/04/2004 

搜索实际单词没有问题。我不知道如何同时搜索单词和搜索日期格式。

有人有什么建议吗?

请您参考如下方法:

在这里检查多个条件将遍历整个列两次,这可能会变得昂贵(尤其是使用 pandas' 已经很慢的字符串操作)。单个正则表达式能够轻松完成此任务:

keys = ['apple', 'candy', 'time'] 
rgx = fr"(?i){'|'.join(keys)}|\d{{2}}/\d{{2}}/\d{{4}}" 

df.loc[df.A.str.contains(rgx)] 

            A           Q           R           S 
0       Apple       chair         red     english 
3       Apple       chair      purple     english 
4  10/01/2016  05/02/2004  05/05/2014  06/20/2018 
5  02/20/2017  01/01/2017  07/07/2017  02/04/2004 

如果你没有使用 Python 3.6+,同样的想法可以使用 format 来表达:

rgx = r"(?i){}|\d{{2}}/\d{{2}}/\d{{4}}".format('|'.join(keys))