簡體   English   中英

如何子集數據框並將它們放在列表中?

[英]How can I subset dataframe and put them on a list?

我正在尋找一種更自動化的方法來按等級對這個數據框進行子集化並將它們放在一個列表中。 因為如果碰巧有 150 個等級,我就不能做單獨的子集。

ID    |  GROUP   |  RANK
1     |    A     |    1
2     |    B     |    2
3     |    C     |    3
2     |    A     |    1
2     |    E     |    2
2     |    G     |    3

如何按 Rank 對數據框進行子集化,然后將每個子集放入列表中? (不使用分組依據)我知道如何對它們進行單獨的子集化,但我不確定如果有更多的等級我怎么能做到這一點。

輸出:

ranks = [df1,df2,df3....and so on]

只需在列表理解中直接使用groupby

>>> [df for rank, df in df.groupby('RANK')]

這將生成一個數據幀列表,每個數據幀都是與相應rank相關的子數據幀。

您還可以進行 dict 理解:

>>> dic = {rank: df for rank, df in df.groupby('RANK')}

這樣您就可以通過dic[1]訪問您的 df 以獲取rank == 1


更詳細地說, pd.DataFrame.groupby是一個返回DataFrameGroupBy對象的方法。 DataFrameGroupBy對象是一個可迭代對象,這意味着您可以使用 for 循環對其進行迭代。 這個可迭代的生成具有兩個值的元組,其中第一個是您用來分組的任何內容(在本例中為整數rank ),第二個是子數據幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM