我有以下函数来检测数据中的字符串,我加入了字典的键和值,因为我想找到这两个值。我添加了 ^ 和 $ 因为我只想要精确匹配。
功能
import pandas as pd
def check_direction(df):
# dict for all direction and their abbreviation
direction = {
'^Northwest$': '^NW$',
'^Northeast$': '^NE$',
'^Southeast$': '^SE$',
'^Southwest$': '^SW$',
'^North$': '^N$',
'^East$': '^E$',
"^South$": '^S$',
"^West$": "^W$"}
# combining all the dict pairs into one for str match
all_direction = direction.keys() | direction.values()
all_direction = '|'.join(all_direction)
df = df.astype(str)
df = pd.DataFrame(df.str.contains(all_direction, case = False))
return df
我对以下系列进行了测试,结果按预期工作:
tmp = pd.Series(['Monday', 'Tuesday', 'Wednesday', 'Thursday'])
check_direction(tmp)
0 False
1 False
2 False
3 False
tmp = pd.Series(['SOUTH', 'NORTHEAST', 'WEST'])
check_direction(tmp)
0 True
1 True
2 True
但是我在这里遇到了问题:
tmp = pd.Series(['32 Street NE', 'Ogden Road SE'])
check_direction(tmp)
0 False
1 False
由于 NE 和 SE,当它应该为 True 时,两者都返回为 false,我该如何修改我的代码来实现这一点?
慕码人2483693
相关分类