首页 > 解决方案 > 将 ID 上的数据框的行组合起来以求和,但保留分类数据

问题描述

我正在清理数据并有一个问题。我有一个联系人数据集和一个客户数据集。我需要合并“ContactID”上的两个数据框。一些 ContactID 有多个帐户。因此,当我合并它们时,仍然有一些 ContactID 具有多行。我需要组合这些行,以便数字列加在一起,同时仍保留分类列。下面是一个例子:

当我合并时:

ContactID           Value                  Type
1                           800                      A
1                           70                        A
2                           100                      B
3                           300                      A
4                           200                      C
5                           500                      B
5                           600                      B

合并时我需要数据的样子:

ContactID           Value                  Type
1                           870                      A
2                           100                      B
3                           300                      A
4                           200                      C
5                           1100                    B

我试过这个:

fulldf.groupby(fulldf.ContactID).sum()

但是,我只得到一个包含数值的数据框。

标签: pythonpandas

解决方案


让我们检查dtype并创建groupby dict

out = df.groupby('ContactID').agg(df.dtypes.map({'O':'first'}).fillna('sum').to_dict())
           ContactID  Value Type
ContactID                       
1                  2    870    A
2                  2    100    B
3                  3    300    A
4                  4    200    C
5                 10   1100    B

推荐阅读