如何遍历数据帧行,根据列将数据拆分为单独的数据帧?

2024-05-15 04:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看过了iterrows、列表理解、字典理解、应用和itertuples。我无法让任何人执行下面的场景。任何帮助都将不胜感激

原始数据帧示例:

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

预期结果迭代原始数据帧,按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

Tags: 数据testcomid原始数据emailinvoiceprice
2条回答

使用来自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

我能够使用以下代码创建一个字典,其中每个数据帧都按ID划分:

dict_of_dfs = {

    ID: group_df 

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

}

我还能够使用以下代码创建一个列表,其中每个数据帧都按ID划分:

list_of_dfs = [

    group_df 

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

]

相关问题 更多 >

    热门问题