d={'type':[],'count':[]}
for group_name,group_items in groups:
d['type'].append(group_name)
d['count'].append(df.loc[df['type'].isin(group_items),'count'].sum())
result=pd.DataFrame(d)
print('Result:')
print(result)
运行结果:
Input:
type count
0 a 0
1 b 3
2 a 1
3 c 5
4 a 2
5 b 4
Result:
type count
0 A1 10
1 A1 8
2 A2 15
3 A3 15
4 B1 12
5 E1 0
gdf = pd.DataFrame(groups,columns=['tag','type'])
gdf = gdf.explode(column='type').pivot(index='type',columns='tag',values='type')
''' 大概是这样子
tag A1 A2 A3 B1 E1
type
a a a a NaN NaN
b b b b b NaN
c NaN c c c NaN
d NaN NaN d d d
e NaN NaN NaN NaN e
f NaN NaN NaN NaN f
'''
df1 = df.reindex(columns = dd.index)
''' 大致是这样子
type a b c d e f
0 2 1 2 NaN NaN NaN
1 3 0 5 NaN NaN NaN
2 4 3 4 NaN NaN NaN
3 7 -1 2 NaN NaN NaN
'''
gdf.agg(lambda s: df1.loc[:,s.notna()].sum().sum())
'''
tag
A1 19.0
A2 32.0
A3 32.0
B1 16.0
E1 0.0
dtype: float64
'''