假设我正在处理这个数据帧:
<表类>
ID
合格
年
数量一个
量B
tbody><<tr>1 没有 2020 0 150 1没有 2019 0 100 1对 2019 10 15 1没有 2018 0 100 1对 2018 10 150 2对 2020 0 200 2没有 2017 0 100 … … … … 表类>
可以使用agg()
和groupby()
函数执行此操作。
agg()
允许您不仅使用常见的聚合函数(如sum
,mean
等),还可以使用自定义函数。
我会这样做:
def agg_qualify(x):
values = x.unique()
if len(x)>1:
return 'Partial'
return values[0]
df.groupby(['ID', 'Year']).agg({
'Qualified': lambda x: agg_qualify(x),
'Amount A': 'sum',
'Amount B': 'sum',
}).reset_index()
输出:
ID Year Qualified Amount A Amount B
0 1 2018 Partial 10 250.0
1 1 2019 Partial 10 115.0
2 1 2020 No 0 150.0
3 2 2020 Yes 0 200.0