首页 > 解决方案 > 如果列表中存在熊猫计数列,则按部分和不区分大小写的匹配添加

问题描述

我想通过部分字符串匹配和忽略大小写,在列表中添加一列计算熊猫列中每个元素的出现次数。我的输入数据框是foo 我想与列表匹配mylist

foo = pd.DataFrame({'a' : [1,2,3], 'b' : ['hi', 'foo', 'at']})

mylist = ['oo', 'fat', 'cat']

所以,我想在 dataframe 中添加一列,如果它存在于foo列中,则列中每个元素的计数。我想通过忽略大小写和部分匹配来检查匹配。bmylist

上述情况的预期结果应该是,


foo = pd.DataFrame({'a' : [1,2,3], 'b' : ['hi', 'foo', 'at'], 'count': [0, 1, 2]})

谢谢

标签: pandas

解决方案


使用Series.str.lowerwith和Series.apply测试 with值:insumTrue

#if necessary convert list values to lowercase
#mylist = [x.lower() for x in mylist]
foo['count'] = foo['b'].str.lower().apply(lambda x: sum((x in y) or (y in x) for y in mylist))
print (foo)
   a    b  count
0  1   hi      0
1  2  foo      1
2  3   at      2

推荐阅读