系列如下:
value
aa aa bb cc
dd ee aa
ff aa cc
我想计算一行中某个单词的出现次数,并用字典中给出的权重相乘
weights = {
'aa':1,
'bb':1,
'cc':0.5
}
结果应该是
value_score
3.5
1
1.5
以上可以解释为总和(单词在字典中的出现*字典中的权重),即第一个值是2*1+1*1+1*0.5=3.5
我目前使用str.计数但随着更多的价值观的出现,它并不是有效的
df['value_score'] = (df['value'].str.count('aa', regex=False) * weights['aa'] +
df['value'].str.count('bb', regex=False) * weights['bb'] +
df['value'].str.count('cc', regex=False) * weights['cc'] )
将列表理解与
get
一起用于0
用于不匹配的值:另一种解决方案:
您可以使用^{} :
没有矢量化的解决方案是可能的。为了提高性能,您应该支持列表理解而不是Pandas
str
方法。你知道吗相关问题 更多 >
编程相关推荐