合并行,当匹配其他列的相关条件时,将行值中的字符串转换为用户自定义的字符串



假设我正在处理这个数据帧:

<表类> ID 合格 年 数量一个 量B tbody><<tr>1没有202001501没有201901001对201910151没有201801001对2018101502对202002002没有20170100…………

可以使用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