我正在尝试迭代以下数据框中的组:
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/