我有一个dataframe
,例如:
col1 col2 col3 ID
A 23 AZ ER1 ID1
B 12 ZE EZ1 ID2
C 13 RE RE1 ID3
我解析了ID col以快速获取一些信息,对于每个ID我都得到了一些信息,这是代码的结果:
for i in dataframe['ID']:
name = function(i,ranks=True)
print(name)
{'species': 'rabbit', 'genus': 'unis', 'subfamily': 'logomorphidae', 'family': 'lego', 'no rank': 'info, nothing', 'superkingdom': 'eucoryote'}
{'species': 'dog', 'genus': 'Rana', 'subfamily': 'Alphair', 'family': 'doggidae', 'no rank': 'dsDNA , no stage', 'superkingdom': 'eucaryote'}
{'species': 'duck', 'subfamily': 'duckinae', 'family': 'duckidae'}
...
如您所知,这是字典返回。您还可以看到ID 1和2我得到6条信息(species, genus, subfamily, family,no rank,superkingdom)
对于ID 3我只得到3条信息
这个想法不仅仅是打印dic内容直接将其添加到dataframe
并获得:
col1 col2 col3 ID species genus subfamily family no rank superkingdom
A 23 AZ ER1 ID1 rabbit unis logomorphidae lego info, nothing, eucaryote
B 12 ZE EZ1 ID2 dog Rana Alphair doggidae dsDNA , no stage eucaryote
C 13 RE RE1 ID3 duck None duckinae duckidae None None
您有想法用熊猫吗? 感谢您的帮助。
答案 0 :(得分:1)
将输出存储在dict
的{{1}}中,从而轻松创建dicts
并将其重新加入。
DataFrame
d = {}
for i in dataframe['ID']:
d[i] = taxid.lineage_name(i, ranks=True)
df.merge(pd.DataFrame.from_dict(d, orient='index'), left_on='ID', right_index=True)