python - 迭代分组数据框中的组

标签 python pandas group-by

我正在尝试迭代以下数据框中的组:

gop      Family         date         Amount
A          F1        2019-03-06       0.00      
                     2019-04-04       0.00
                     2019-05-07       0.00
B          F1        2019-03-06      -0.02
                     2019-04-04      -25.02
                     2019-05-07      -7.02
           F2        2019-03-06      -40.68
                     2019-04-04       2.76
                     2019-05-07      3525.57

我使用了以下代码:

df_grouped = df.sort_values(['date']).groupby(['gop', 'Family', 'date'])
for group in df_grouped:
    #operations on groups

我遇到的问题是每个组的类型都是tuple,我不知道如何使用它。我想要的是将每个组视为单独的数据框。

预期的数据帧是:

gop      Family         date         Amount
A          F1        2019-03-06       0.00      
                     2019-04-04       0.00
                     2019-05-07       0.00

###############
gop      Family         date         Amount
B          F1        2019-03-06      -0.02
                     2019-04-04      -25.02
                     2019-05-07      -7.02
##############
gop      Family         date         Amount
B           F2        2019-03-06      -40.68
                     2019-04-04       2.76
                     2019-05-07      3525.57

最佳答案

将元组解压为 2 个变量 - 例如添加 i 作为组名称,为 DataFrame 添加 group:

print (df.index)
MultiIndex(levels=[['A', 'B'], ['F1', 'F2'], ['2019-03-06', '2019-04-04', '2019-05-07']],
           codes=[[0, 0, 0, 1, 1, 1, 1, 1, 1], 
                  [0, 0, 0, 0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2, 0, 1, 2]],
           names=['gop', 'Family', 'date'])
<小时/>
df_grouped = df.sort_values(['date']).groupby(['gop', 'Family'])
for i, group in df_grouped:
    print (i)
    print (group)
('A', 'F1')
                       Amount
gop Family date              
A   F1     2019-03-06     0.0
           2019-04-04     0.0
           2019-05-07     0.0
('B', 'F1')
                       Amount
gop Family date              
B   F1     2019-03-06   -0.02
           2019-04-04  -25.02
           2019-05-07   -7.02
('B', 'F2')
                        Amount
gop Family date               
B   F2     2019-03-06   -40.68
           2019-04-04     2.76
           2019-05-07  3525.57

也可以再次解压由 groupby 中的列创建的元组:

for (a,b), group in df_grouped:
    print (a)
    print (b)
    print (group)

A
F1
                       Amount
gop Family date              
A   F1     2019-03-06     0.0
           2019-04-04     0.0
           2019-05-07     0.0
B
F1
                       Amount
gop Family date              
B   F1     2019-03-06   -0.02
           2019-04-04  -25.02
           2019-05-07   -7.02
B
F2
                        Amount
gop Family date               
B   F2     2019-03-06   -40.68
           2019-04-04     2.76
           2019-05-07  3525.57

关于python - 迭代分组数据框中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475639/

相关文章:

sql - 使用 Left Join 时避免在 GROUP BY 子句中指定每个表字段

python - Python 中颜色条的自定义(截断并添加更多颜色)

python - 迭代从 excel 文件列创建的 pandas 数据框时出错

python - 重定向加载旧内容?

python - pandas 未正确设置列

python - 使用 Pandas str.split 和不同长度的逗号分隔字符串

php - 按日期 MYSQL 在 Activity 流中按顺序分组

mysql分组问题

python - Python 中的单例模式

Python Matplotlib : Centering figure around a moving artist