Python 使用多个键将数据帧转换为字典

Python 使用多个键将数据帧转换为字典,python,r,dictionary,pandas,nested,Python,R,Dictionary,Pandas,Nested,我目前正在使用一个数据帧,该数据帧由一列13个字母字符串(“13mer”)组成,并带有ID代码(“加入”): 但是,我想创建一个字典,其中登录代码是键,值是与登录相关的13个mers,因此它看起来如下所示: {'JO2176': ['IGY....', 'QLG...', 'ESS...', ...], 'CYO21709': ['IGY...', 'TVL...',.............], ...} 我使用以下代码实现了这一点: Accession_13mers = {} for

我目前正在使用一个数据帧,该数据帧由一列13个字母字符串(“13mer”)组成,并带有ID代码(“加入”):

但是,我想创建一个字典,其中登录代码是键,值是与登录相关的13个mers,因此它看起来如下所示:

{'JO2176': ['IGY....', 'QLG...', 'ESS...', ...],
 'CYO21709': ['IGY...', 'TVL...',.............],
 ...}
我使用以下代码实现了这一点:

Accession_13mers = {}
for group in grouped:
    Accession_13mers[group[0]] = []
    for item in group[1].iteritems():
        Accession_13mers[group[0]].append(item[1])
但是,现在我想返回并迭代每个加入代码的键,并运行一个我定义为find_match_position(reference_sequence,13mer)的函数,该函数在引用序列中查找13 mer并返回其位置。然后我想把这个位置附加为13个MER的值,这将是关键

如果有人对我如何加快这一进程有任何想法,那将非常有帮助

谢谢


Justin

通过解包,您可以更干净地遍历groupby:

d = {}
for key, s in df.groupby('Accession')['13mer']:
    d[key] = list(s)
这也使它更清楚,你应该把你的功能

。。。然而,我认为它可能更适合列举:

d2 = {}
for pos, val in enumerate(df['13mer']):
    d2[val] = pos

我建议创建一个新的字典,它的值是另一个字典。基本上是嵌套字典

position_nmers = {}
for key in H1_Access_13mers:
    position_nmers[key] = {} # replicate key, val in new dictionary, as a dictionary
    for value in H1_Access_13mers[key]:
        position_nmers[key][value] = # do something
要反思字典并确保它是正确的:

print position_nmers