簡體   English   中英

如何遍歷 dataframe 行,將數據拆分為基於列的單獨數據幀?

[英]How to iterate through dataframe rows, split data to separate dataframes based on column?

我查看了 iterrows、列表理解、字典理解、應用和 itertuples。 我無法讓其中任何一個執行以下場景。 任何幫助將不勝感激!

例如原始 dataframe:

ID  |State  |Invoice|Price|Email 
1000|Texas  |1      |2    |texas@test.com
1000|Texas  |2      |5    |texas@test.com
1001|Alabama|3      |4    |alabama@test.com
1000|Texas  |4      |8    |texas@test.com
1002|Georgia|5      |3    |georgia@test.com
1001|Alabama|6      |6    |alabama@test.com

預期結果遍歷原始 dataframe,按 ID 拉取以將所有數據包含到單獨的數據幀中。

DF1:

ID  |State  |Invoice|Price|Email 
1000|Texas  |1      |2    |texas@test.com
1000|Texas  |2      |5    |texas@test.com
1000|Texas  |4      |8    |texas@test.com

DF2:

ID  |State  |Invoice|Price|Email
1001|Alabama|3      |4    |alabama@test.com
1001|Alabama|6      |6    |alabama@test.com

DF3:

ID  |State  |Invoice|Price|Email
1002|Georgia|5      |3    |georgia@test.com

我能夠使用以下代碼創建一個字典,其中每個 dataframe 按 ID 拆分:

dict_of_dfs = {

    ID: group_df 

    for ID, group_df in df.groupby('ID') 

}

我還能夠使用以下代碼創建一個列表,其中每個 dataframe 按 ID 拆分:

list_of_dfs = [

    group_df 

    for _, group_df in df.groupby('ID')

]

使用pd.groupby中的石斑魚 -

df1, df2, df3 = [i[1] for i in df.groupby(['ID'])]

使用pd.Series.unique的條件 -

df1, df2, df3 = [df[df['ID']==i] for i in df['ID'].unique()]

每種方法的輸出 -

df1
     ID  State  Invoice  Price           Email
0  1000  Texas        1      2  texas@test.com
1  1000  Texas        2      5  texas@test.com
3  1000  Texas        4      8  texas@test.com

#df2
     ID    State  Invoice  Price             Email
2  1001  Alabama        3      4  alabama@test.com
5  1001  Alabama        6      6  alabama@test.com

#df3
     ID    State  Invoice  Price             Email
4  1002  Georgia        5      3  georgia@test.com

暫無
暫無

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

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