给定带有代码的表格
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
如何实现这一目标?
答案 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