用熊猫将结果打印到数据框中

时间:2019-02-23 19:35:06

标签: python-3.x pandas

我有一个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 

您有想法用熊猫吗? 感谢您的帮助。

1 个答案:

答案 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)