繁体   English   中英

在列表上创建多个 pandas 数据帧作为 function 迭代的输出

[英]Creating multiples pandas dataframes as outputs of a function iteration over a list

我正在尝试使用 pytaxize itis.hierarchy_fullpytaxize itis.hierarchy_full 来从特定 ID 中检索有关生物物种的信息。

function 仅采用一个值/Id 并将所有分类信息保存在 pandas dataframe 中,我稍后可以编辑。

import pandas as pd
from pytaxize import itis
test1 = itis.hierarchy_full(180530, as_dataframe = True)

我有 800 个物种 ID,我想自动化该过程以获得 800 个不同的数据帧。

我以某种方式创建了一个包含一个小列表的测试(请注意,我是一名生物学家,所以代码非常基本并且可能效率低下:

species = [180530, 48739, 567823]

tx = {}
for e in species2:
    tx[e] = pd.DataFrame(itis.hierarchy_full(e, as_dataframe = True))

现在,如果我输入tx (我使用的是 Jupyter Notebook),我将获得一个 pandas 数据帧的字典(我认为它是一个嵌套字典)。 如果我输入tx[180530]我会得到一个 dataframe 等于我可以用原始 function 创建的那个。

from pandas.testing import assert_frame_equal
assert_frame_equal(test_180530, sp_180530)

现在我可以写一些东西来将存储在字典中的每个结果保存为单独的 dataframe:

sp_180530 = tx[180530]
sp_48739 = tx[48739]
sp_567823 = tx[567823]

有一种方法可以自动化该过程并将每个 dataframe 保存到 sp_id? 或者更好的是,有一种方法可以在我创建 tx 的原始 function 中直接包含多个数据帧到 output?

不完全是你问的,但能够详细说明如何处理字典中的数据帧......要使用字典,循环遍历字典,然后一个一个地使用每个包含的 dataframe ......

for key in tx.keys():
    df_temp = tx[key]

    # < do all your stuff to df_temp .....>

    # Save the dataframe as you want/need (I assume as csv for here)    
    df_temp.to_csv(f'sp_{key}.csv')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM