我正在尝试遍历以下数据框中的组:
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
答案 0 :(得分:2)
将元组解包为2个变量-例如为组名添加i
,为group
添加DataFrame
:
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