【发布时间】:2019-02-21 10:44:39
【问题描述】:
使用文本数据集时,我有一个提取,它在数据框中给我不规则的结果。我对正则表达式不太擅长,并且从未尝试过过滤器,因此不胜感激。
我正在尝试过滤第 4 行和第 6 行的列 a。模式是 4 个数字、一个字母、一个空格、/ 空格、2 个数字、空格、/、空格、5 个数字、空格、/,然后是下面的任何内容.
数据框如下所示:
a b c d
0 1234B:Program Name / Title Chapter Page Number ID Code
1 1234B:Program Name / Title Chapter Page Number ID Code
2 1234B:Program Name / Title Chapter Page Number ID Code
3 1234B / 01 / 2 (blank) (blank) ID Code
4 1234B / 01 / 23456 / Title Chapter Page Number ID Code <---- Filter for this
5 1234B / 01 / 2 (blank) (blank) ID Code
6 1234B / 01 / 23456 / Title Chapter Page Number ID Code <---- Filter for this
我试过以下代码:
# Filter by pattern
import pandas as pd
import numpy as np
import re
pattern = re.compile("[0-9][0-9][0-9][0-9][B][\s][/][\s][0-9][0-9][\s][/][\s][0-9][0-9][0-9][0-9][0-9][\s]+[/]")
df = df[df['a'].apply(pattern)]
结果是 TypeError:'_sre.SRE_Pattern' 对象不可调用。看来我应用错了。此外,我的正则表达式没有通配符来说明 a 列中的其余数据。过滤列 A 以查看 A 列中的前 20 个字符并对其进行模式匹配的 Pythonic 方法是什么?
【问题讨论】:
标签: regex python-3.x pandas