映射序列中的有序词典

时间:2019-03-22 16:37:06

标签: python pandas

尝试将字符串序列与有序字典进行比较,并使用.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

2 个答案:

答案 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())

希望有帮助...