首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按ID合并数据帧的行以求和值,但保留分类数据

按ID合并数据帧的行以求和值,但保留分类数据
EN

Stack Overflow用户
提问于 2021-04-22 08:54:29
回答 2查看 58关注 0票数 0

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

当我合并时:

代码语言:javascript
复制
ContactID           Value                  Type
1                           800                      A
1                           70                        A
2                           100                      B
3                           300                      A
4                           200                      C
5                           500                      B
5                           600                      B

当我合并时,我需要数据是什么样子:

代码语言:javascript
复制
ContactID           Value                  Type
1                           870                      A
2                           100                      B
3                           300                      A
4                           200                      C
5                           1100                    B

我已经尝试过了:

代码语言:javascript
复制
fulldf.groupby(fulldf.ContactID).sum()

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

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 09:12:59

让我们检查一下dtype并创建groupby dict

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-04-22 09:20:12

分组后,您可以将单个聚合函数应用于DataFrame的列。对于数字列使用sum,对于分类列使用第一个元素。

代码语言:javascript
复制
df.groupby("ContactID").agg(
    {
        "Value": lambda col: col.sum(),
        "Type": lambda col: col.iloc[0],
    }
)

# Output
ContactID   Value   Type
1           870     A
2           100     B
3           300     A
4           200     C
5           1100    B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67205331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档