尝试将字符串序列与有序字典进行比较,并使用.lower().contains('word')
并拉回字典的值
import pandas as pd
from collections import OrderedDict
df = pd.DataFrame({'a':['Cow is good', 'pig is bad', 'Veggies are green', 'soda has sugar', 'the calf cowers']})
od = OrderedDict({'cower':'Cower',
'pig':'Pig',
'veg':'Vegetables',
'soda':'Soda',
'cow':'Cow'})
有序词典的重要性在于,首先需要搜索某些单词(例如Cower和Cow)。
我正在尝试类似以下的方法,但是不确定如何使它工作。
df['b'] = df.a.map(lambda x: x.lower.contains(y) for y, z in od.items())
或
df.a.apply(lambda x: x.lower().map(lambda x: x.contains(y) for y, z in od.items()))
预期输出:
a b
0 Cow is good Cow
1 pig is bad Pig
2 Veggies are green Vegetables
3 soda has sugar Soda
4 the calf cowers Cower
答案 0 :(得分:2)
这有效:
df['b']= df['a'].map(lambda x: max(y if(x.lower().find(y.lower())> -1) else '' for y, z in od.items()))
答案 1 :(得分:0)
您需要明确定义比较:
df = pd.DataFrame(od, columns=od.keys(), index=od.keys())
希望有帮助...