跟进:从列表中获取半唯一值的频率计数

时间:2017-01-06 04:16:23

标签: python ipython python-3.5

这是我提出的问题的后续问题:Returning semi-unique values from a list。简而言之,我想转一下这个清单:

['a','b,'a']

#Paraphrased answer from Psidom

from itertools import groupby  

lst = ['a','a','a','b','b','b','a','a','a']

[k for k, _ in groupby(lst)]
# ['a', 'b', 'a'] #call this TRANSFORM

用户Psidom的回答通过以下方式起到了作用:

[3,3,3] 

我的最终目标是创建一个pd.DataFrame,其行=(TRANSFORM中的元素数)和两列:label和frequency。我的麻烦是从原始列表中获取每个“半唯一”值的频率计数,这应该是:

{{1}}

提前谢谢你,

1 个答案:

答案 0 :(得分:2)

groupby documentation有这个示例输出:

# [k for k, g in groupby('AAAABBBCCDAABBB')] --> A B C D A B
# [list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D

所以,我认为你需要:

[(k, len(list(v))) for k, v in groupby(lst)]

哪个会给你元素和频率:

[('a', 3), ('b', 3), ('a', 3)]