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

If line contains date in DD/MM/YY print line

我有一个数据库,类似于这个(这只是一个专栏):

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

我需要一个代码 returns 只有包含日期​​并形成两列的行: 一列包含日期,另一列包含该行的第一个参数,例如:

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

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

您可以使用 .str.contains 首先过滤包含日期的行,然后 split 分隔符 - 周围的那些行以获得所需的结果:

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