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,我得到(species, genus, subfamily, family,no rank,superkingdom)
了 ID 3 的 6 条信息,我只得到 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
你有想法用熊猫做吗?谢谢你的帮助。
解决方案
将您的输出存储在 a dict
of 中dicts
,以便轻松创建 aDataFrame
并将其加入。
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)
输出:
col1 col2 col3 ID species genus subfamily family no rank superkingdom
A 23 AZ ER1 ID1 rabbit unis logomorphidae lego info, nothing eucoryote
B 12 ZE EZ1 ID2 dog Rana Alphair doggidae dsDNA , no stage eucaryote
C 13 RE RE1 ID3 duck NaN duckinae duckidae NaN NaN
推荐阅读
- android - 当我更新到最新版本时,我如何知道我的 android 应用程序以前的版本名称/代码
- java - “没有列出 SKU,无法加载它们” - solovyev.android:checkout
- java - 不同状态之间的布尔交替而不被更新
- machine-learning - Octave 中的线性回归实现
- microsoft-translator - 使用具有法律类别的 Microsoft 翻译中心
- c# - MediatR fluent validation response from pipeline behavior
- php - 如何防止重复的用户名和电子邮件并在人们注册时显示消息“用户名或电子邮件已经存在?PHP / MySQL
- php - 如何使用带有 API URL 的多个参数的 $select 来仅选择特定的列?
- ios - React Native ios 应用程序构建失败并出现“选择开发团队错误”
- c# - 如何实现抽象工厂的客户端代码?