功能不适用于熊猫数据框

时间:2021-05-04 07:53:04

标签: python pandas dataframe

我正在尝试计算两个列表之间的匹配对象(包括重复项)。为此,我具有以下功能:

def counter(row):
    return len([key for key, val in enumerate(row) if val in set(words)])

单词是单词列表。当我将此函数与松散字符串一起使用时

lists = ['uno', 'dos', 'one', 'two', 'tres', 'quatro', 'yes', 'wooly', 'bully', 'watch', 'watch', 'come', 'come', 'watch', 'git', 'matty', 'told']

它工作正常,但是当我也将它应用到数据集时

df.apply(lambda row: counter(['Token']), axis=1)

或与

df['Token'] = df['Token'].map(counter)

打印输出每行显示0,而值应该更高

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

InvBind

要将带有计数的字典与数据框匹配,您可以这样做:

import pandas as pd
lst = ['uno', 'dos', 'one', 'two', 'tres', 'quatro', 'yes', 'wooly', 'bully', 'watch', 'watch', 'come', 'come', 'watch', 'git', 'matty', 'told']
lst = list(set(lst))

df = pd.DataFrame({'Token':['two', 'two', 'tres', 'tres', 'tres', 'quatro', 'quatro', 'quatro', 'quatro', 'yes', 'cool', 'car', 'cauterize']})
dct = df[df['Token'].isin(lst)]['Token'].value_counts().to_dict()
print(dct)

# {'quatro': 4, 'tres': 3, 'two': 2, 'yes': 1}