我有一个数据库,与此类似(这只是一列):
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/