如何从数据帧的列中提取匹配模式

时间:2019-12-14 08:39:26

标签: regex python-3.x pandas dataframe

我想从该列中提取特定值

article/dimension
FI SW F 3/4/5 22,0 x 145,0
FI SW F 3/4/5 22,0 x 145,0
FI SW F 3/4/5 22,0 x 145,0

我只需要这部分22,0 x 100,0

我发现了这个熊猫函数pandas.Series.str.contains,您可以在其中测试模式或正则表达式是否包含在Series或Index的字符串中

所以我需要创建一个正则表达式并在模式之后过滤列,但是我不知道如何创建正则表达式模式,有没有简单的正则表达式生成器?我发现这个网站reg generator  但不知道如何实现

2 个答案:

答案 0 :(得分:0)

使用str.extract

df['article/dimension'].str.extract(r'(\d+(?:,\d+)? x.*$)')

答案 1 :(得分:0)

如果您不仅要提取整个 dimension 部分, 但也对两个数值片段都感兴趣,请运行:

df['article/dimension'].str.extract(
    r'(?P<Dim>(?P<N1>\d+(?:,\d+)) x (?P<N2>\d+(?:,\d+)))')

由于我使用了命名捕获组,因此所有输出列均具有其名称, 什么更具可读性。

结果是:

            Dim    N1     N2
0  22,0 x 145,0  22,0  145,0
1  22,0 x 145,0  22,0  145,0
2  22,0 x 145,0  22,0  145,0