熊猫系列查找字典并更新计数

时间:2018-11-05 20:59:45

标签: python pandas dictionary

我想制作一个字典来记录元组的出现。

permute_lst=[('NN', 'shoe'), ('JJ', 'new'), ('NN', 'shirt'), ('JJ', 'vintage')]

熊猫系列的一个例子是这样的。

df['term'][0] = [('NN', 'shoe'), ('NN', 'jacket'), ('NN', 'sock'), ('NN', 'coat'), ('JJ', 'glittering')]

我当前的代码如下所示。

permutation_mapping = defaultdict(int) 
for p in permute_lst:
    k, v = p, 0
    for i in range(len(df['term'])): 
        for tup in df['term'][i]:
             if tup in permutation_mapping:
                permutation_mapping[k] = permutation_mapping.get(k, 0)+1

我得到的结果是一个空字典  defaultdict(int, {})

我期望的是这样的事情:{'('NN', 'shoe')': 1, '('JJ', 'new')': 0, '('NN', 'shirt')': 0, '('JJ', 'vintage')': 0}

1 个答案:

答案 0 :(得分:1)

自从标记了pandas以来,您可以使用tolist重建数据帧,然后将isinvalue_counts一起使用

ndf=pd.DataFrame(df.term.tolist())
ndf[ndf.isin(permute_lst)].stack().value_counts()
Out[223]: 
(NN, shoe)    2
dtype: int64
# if need dict adding to_dict
ndf[ndf.isin(permute_lst)].stack().value_counts().to_dict()
Out[224]: {('NN', 'shoe'): 2}
相关问题