python - 在同一循环中使用列表填充 dict
问题描述
我正在尝试用 pandas sereis 中按列出现的字符来填充字典。剧集如下:
>>> jkl
1 ATGC
2 GTCA
3 CATG
Name: 0, dtype: object
我想要一个包含所有字符作为键的字典,并将它们的按列出现频率列表作为字典的值,如下所示:
{'A':[1,1,0,1],'C':[1,0,1,1],'G':[1,0,1,1],'T':[0,2,1,0]}
我尝试了几个代码,这是其中之一:
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
但是这个 dict 不包含所需的输出,有解决方案吗?
解决方案
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
添加后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]}
推荐阅读
- angular - 如何在 Angularfire 中实现多所有者文档?
- c++ - CMake 错误“源似乎不包含 CMakeLists.txt”,路径/库连接问题
- android - 如何将数据发送到 Android Studio 中的 Word 文档?
- java - 如何使用没有数组名称的 volley 从 url 中检索数据?
- javascript - jQuery成功后刷新selectpicker选项不起作用
- python - Flask 迁移失败,未加载扩展
- ibm-mq - 如何在 IBM MQ 中创建消息传递级别用户
- c# - 表和对象列表之间的 LINQ 连接失败
- mongodb - 如何重命名 mongoDB 列大数据?
- python - 时间一到,如何给用户一定的时间来回复和打印消息?(Python)