匹配熊猫列的子串

时间:2021-03-15 13:06:05

标签: pandas

给定带有代码的表格

import pandas as pd
import numpy as np
df=pd.DataFrame({"item":['ABA','ADA','12AB','34CD','bCD','ABCD','d']})

和桌子

    item
0   ABA
1   ADA
2   12AB
3   34CD
4   bCD
5   ABCD
6   d

我想将包含子串“AB”或“AD”的字符串替换为1,将“CD”替换为2,从头开始匹配,我们得到最早的匹配,例如'ABCD' 将被归类为 1。

预期输出:

   item result
0   ABA      1
1   ADA      1
2  12AB      1
3  34CD      2
4   bCD      2
5  ABCD      1
6     d    NaN

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

尝试使用 str.extract

replace = {'AB':1, 'AD':1, 'CD':2}
pat = '|'.join(replace.keys())

df['result'] = df['item'].str.extract(f'({pat})', expand=False).map(replace)

输出:

   item  result
0   ABA     1.0
1   ADA     1.0
2  12AB     1.0
3  34CD     2.0
4   bCD     2.0
5  ABCD     1.0
6     d     NaN