繁体   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