如何将map与具有正则表达式键的字典一起使用?

Qas*_*wed 5 regex dictionary key python-3.x pandas

我有一个带有要映射的变量的DataFrame,使用的字典中的键不是“普通”字符串,而是正则表达式。

import pandas as pd
import re
df = pd.DataFrame({'cat': ['A1', 'A2', 'B1']})
Run Code Online (Sandbox Code Playgroud)

我想做的是df['cat'].map({'A\d': 'a', 'B1': 'b'}),但A\d似乎没有被解释为正则表达式。我可以用这种简单的MWE做df['cat'].map({'A1': 'a', 'A2': 'a', 'B1': 'b'}),但是在现实世界中,正则表达式要复杂得多。另外,字典要复杂得多,因此这里的解决方案(需要添加开始和结束语句并re.compile在键周围应用)是不可行的。

piR*_*red 6

replace与使用regex=True

map需要一个可调用的。当你传递一个字典时,它会将字典替换为lambda x: your_dict.get(x, x). replace适合您的目的。

df.replace({'A\d': 'a', 'B1': 'b'}, regex=True)

  cat
0   a
1   a
2   b
Run Code Online (Sandbox Code Playgroud)