这是我的场景:
我需要搜索 . . .假设以下 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))
