分组行和定义列聚合规则

时间:2017-10-06 16:23:31

标签: python pandas duplicates aggregate pandas-groupby

我想在pandas中合并多行不同的dtypes。我有.groupby()参数:['ID']。列['A']可能会在按['ID']分组时重复值,或者每行的数据会有所不同。只需要通过['B']汇总.sum()列。

input_df

ID        A        B
140-1    Apple     3.2
140-1    Pear      5.0
143-2    Plum      1.2
143-2    Plum      2.0

有什么好方法1)按['ID']分组,2)如果在分组后重复,则显示['A']的值,如果在分组后不重复,则显示['A']的第一个值,以及3 )将列['B']汇总到一个新的数据框中?

output_df

ID        A        B
140-1    Apple     8.2
143-2    Plum      3.2

2 个答案:

答案 0 :(得分:1)

尝试:

input_df.groupby('ID').apply(lambda f: pd.DataFrame({'A': f.A.head(1), 'B': f.B.sum()})).reset_index(level=0)


#       ID      A    B
# 0  140-1  Apple  8.2
# 2  143-2   Plum  3.2

答案 1 :(得分:1)

你可以尝试

df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()

    ID      A       B
0   140-1   Apple   8.2
1   143-2   Plum    3.2