簡體   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