Мне нужна помощь для объединения словаря и табуляции.
Вот это 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
)
, но это не сработало.