python - 如果行包含 DD/MM/YY 打印行中的日期

标签 python regex pandas database find

我有一个数据库,与此类似(这只是一列):

OPÇÃO IBOVESPA - 13/01/2021
OPÇÃO IBOVESPA - 16/12/2020
IDICFPBB    FPBB
OPD IDI/JPFT
Opção s/disp./Índice - IDIOPDFPD3
Opção s/disp./Índice - IDIOPDFPF5
Opção s/disp./Índice - IDIOPDJPF1
BBDC PN - 21/12/2020
BOVA CI - 21/12/2020

我需要一个仅返回包含日期并形成两列的行的代码: 一列包含日期,另一列包含该行的第一个参数,例如:

OPÇÃO IBOVESPA | 13/01/2021
OPÇÃO IBOVESPA | 16/12/2020
BBDC PN | 21/12/2020
BOVA CI | 21/12/2020

我尝试使用正则表达式,但无法修复代码,你能帮我吗?

最佳答案

您可以使用.str.contains首先过滤包含日期的行,然后分割围绕分隔符-的行以获取期望的结果:

m = df['COL'].str.contains(r'\d{2}/\d{2}/\d{4}')
df.loc[m, 'COL'].str.split(r'\s-\s', expand=True)

或者您可以将 .str.extract 与正则表达式捕获组一起使用来提取包含第一个参数和日期在分隔符 - 周围分隔的模式的行:

df['COL'].str.extract(r'(.+)\s-\s(\d{2}/\d{2}/\d{4})').dropna(how='all')

结果:

                0           1
0  OPÇÃO IBOVESPA  13/01/2021
1  OPÇÃO IBOVESPA  16/12/2020
7         BBDC PN  21/12/2020
8         BOVA CI  21/12/2020

关于python - 如果行包含 DD/MM/YY 打印行中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65921772/

相关文章:

python - Pandas Dataframe - 向下移动行并维护数据

python - 你如何在 Pandas 的每一行中添加一个数组?

python - 安装和运行 pywin32 2.7 时出错

c# - 在 C# 中使用正则表达式拆分字符串上的标记

javascript - 使用 RegExp 验证本地和国际号码

Pandas:从一列中获取日期并将其添加到另一列中

python - 错误是 : No module named django_mongodb_engine. base

python - 有没有办法将先前计算的行值与 Pandas Dataframe 中不同列的总和一起使用?

python - 如何从 Python 链接下载扩展名为 .torrent 的文件

正则表达式无法识别带有特殊字符的电子邮件?