在同一循环中使用列表填充dict

Amm*_*ema 3 python dictionary python-3.x pandas

我正在尝试用pandas sereis中的列式字符出现来填充一个字典.sereis如下:

>>> jkl
1     ATGC
2     GTCA    
3     CATG
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)

我希望dict的方式包含所有字符作为键和列的明确出现频率列表作为dict的值,如下所示:

{'A':[1,1,0,1],'C':[1,0,1,1],'G':[1,0,1,1],'T':[0,2,1,0]}
Run Code Online (Sandbox Code Playgroud)

我尝试了几个代码,这是其中之一:

mylist = ['A', 'C', 'G','T']
dict = {key: None for key in mylist}
for i,(a,b) in enumerate(zip_longest(jkl[1],dict.keys())):
    t=str(list(jkl.str[i]))
    single_occurrences = Counter(t)    
    kl.append(single_occurrences.get(b))
    dict[b]=kl
Run Code Online (Sandbox Code Playgroud)

但这个字典不包含所需的输出,是否有解决方案?

WeN*_*Ben 5

crosstab在重新创建数据帧后使用

S=pd.DataFrame(s.map(list).tolist()).melt()
pd.crosstab(S.value,S.variable)
Out[338]: 
variable  0  1  2  3
value               
A         1  1  0  1
C         1  0  1  1
G         1  0  1  1
T         0  2  1  0
Run Code Online (Sandbox Code Playgroud)

添加后 to_dict

pd.crosstab(S.value,S.variable).T.to_dict('l')
Out[342]: {'A': [1, 1, 0, 1], 'C': [1, 0, 1, 1], 'G': [1, 0, 1, 1], 'T': [0, 2, 1, 0]}
Run Code Online (Sandbox Code Playgroud)