Python 使用键、值对进行dict,其中值是字符串出现的频率

Python 使用键、值对进行dict,其中值是字符串出现的频率,python,pandas,dataframe,Python,Pandas,Dataframe,所以我的df['data']看起来像这样 [[G,37,T],-,447,A]] [G,78,A],-,447,A],[A,1023,-] [447,A],[C,3049,T]] [447,A]] 我需要的是这样的字典 {'-447A':4,'G37T':1,'G78T':1,'C3049T':1,'A1023-':1} 我试着做df.to_list(),但我得到了列表的列表,然后连接每个项目得到字符串的列表,然后将它们转换为dict,但我得到的只是一些 TypeError:“float”对

所以我的df['data']看起来像这样

[[G,37,T],-,447,A]]
[G,78,A],-,447,A],[A,1023,-]
[447,A],[C,3049,T]]
[447,A]]
我需要的是这样的字典

{'-447A':4,'G37T':1,'G78T':1,'C3049T':1,'A1023-':1}
我试着做df.to_list(),但我得到了列表的列表,然后连接每个项目得到字符串的列表,然后将它们转换为dict,但我得到的只是一些

TypeError:“float”对象不可编辑 TypeError:序列项0:应为str实例,找到列表


因此,我认为有一个比循环更好/更快的选项

不要认为在pandas中有更优化的方法来实现这一点,只要将其转换为列表,使用集合对其进行转换和计数。计数器:

from collections import Counter
Counter((''.join(map(str, slst)) for lst in df.data.to_list() for slst in lst))
# Counter({'-447A': 4, 'G37T': 1, 'G78A': 1, 'A1023-': 1, 'C3049T': 1})

当我运行这个程序时,我得到了类型错误:“float”对象不是iterable我的数据框中有一些Nan值,这就是为什么你的数据不一定是所有列表,但可能是混合的float和list的列表。