pandas - 如果列表中存在熊猫计数列,则按部分和不区分大小写的匹配添加
问题描述
我想通过部分字符串匹配和忽略大小写,在列表中添加一列计算熊猫列中每个元素的出现次数。我的输入数据框是foo
我想与列表匹配mylist
foo = pd.DataFrame({'a' : [1,2,3], 'b' : ['hi', 'foo', 'at']})
mylist = ['oo', 'fat', 'cat']
所以,我想在 dataframe 中添加一列,如果它存在于foo
列中,则列中每个元素的计数。我想通过忽略大小写和部分匹配来检查匹配。b
mylist
上述情况的预期结果应该是,
foo = pd.DataFrame({'a' : [1,2,3], 'b' : ['hi', 'foo', 'at'], 'count': [0, 1, 2]})
谢谢
解决方案
使用Series.str.lower
with和Series.apply
测试 with值:in
sum
True
#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
推荐阅读
- javascript - html:在为表格创建行时使用 innerhtml 时,Onfocus、onblur、onkeypress 不起作用
- sql-server - SQL Server:事务成功后自动删除数据
- c# - SQL Server 图像列到 html
- sql - 如何创建一个存储过程,其中我想要“SELECT FROM”的列是动态的?
- android - 我们的秒表应用程序有多准确?
- node.js - 没有覆盖纽约摩卡咖啡
- r - 如何在 RStudio 中安装 keras?
- eclipse - Maven:如何使用相同版本的相同文件名进行部署
- android - 从 Android 中的 sqlite 返回 sum(item_price)
- javascript - 如何将包装在 Promise 中的值传递给非异步函数?