Объединить словарь и вкладку - PullRequest
1 голос
/ 23 января 2020

Мне нужна помощь для объединения словаря и табуляции.

Вот это dic:

dic = {
    267970: [
        ('species', 'Bean yellow disorder virus'),
        ('genus', 'Crinivirus'),
        ('family', 'Closteroviridae'),
        ('sub_family','Closyerovirinae'),
        ('no_rank', 'ssRNA positive-strand viruses, no DNA stage'), 
        ('no_rank', 'ssRNA viruses'),
        ('superkingdom', 'Viruses')
    ],
    190063: [
        ('species', 'Fowl aviadenovirus C'),
        ('genus', 'Aviadenovirus'),
        ('family', 'Adenoviridae'),
        ('no_rank', 'dsDNA viruses, no RNA stage'),
        ('superkingdom', 'Viruses')
    ]
}

Как видите, в dic может быть > 1 no_rank информации, поэтому я думаю, что сначала мы должны переименовать no_rank в dic, добавив рядом с ним число:

dic = {
    267970: [
        ('species', 'Bean yellow disorder virus'),
        ('genus', 'Crinivirus'),
        ('family', 'Closteroviridae'),
        ('sub_family','Closyerovirinae'),
        ('no_rank1', 'ssRNA positive-strand viruses, no DNA stage'), 
        ('no_rank2', 'ssRNA viruses'),
        ('superkingdom', 'Viruses')
    ],
    190063: [
        ('species', 'Fowl aviadenovirus C'),
        ('genus', 'Aviadenovirus'),
        ('family', 'Adenoviridae'),
        ('no_rank1', 'dsDNA viruses, no RNA stage'),
        ('superkingdom', 'Viruses')
    ]
}

И у меня есть файл tab1, например:

Species_names ID
Species1      267970
Species2      190063

И я хотел бы добавить dic к новой вкладке, объединив dic и tab1, чтобы получить:

Species_names ID     species                    genus         family          sub_family      no_rank1                                    no_rank2      super_kingdom
Species1      267970 Bean yellow disorder virus Crinivirus    Closteroviridae Closterovirinae ssRNA positive-strand viruses, no DNA stage ssRNA viruses Viruses
Species2      190063 Fowl aviadenovirus C       Aviadenovirus Adenoviridae    NA              dsDNA viruses, no RNA stage                 NA            Viruses

У кого-нибудь есть идея?

В последней части я попробовал:

tab1.merge(
    pd.DataFrame.from_dict(dict, orient='index'),
    left_on='ID',
    right_index=True
)

, но это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...