我想制作一个字典来记录元组的出现。
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}
答案 0 :(得分:1)
自从标记了pandas
以来,您可以使用tolist
重建数据帧,然后将isin
与value_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}