【问题标题】:Pandas rename one value as other value in a column and add corresponding values in the other column熊猫将一个值重命名为列中的另一个值并在另一列中添加相应的值
【发布时间】:2021-07-14 14:24:17
【问题描述】:

所以,我有一个熊猫数据框:

        df = 
                 a                   b          c
                 a1                 b1         c1
                 a2                 b2         c1
                 a2                 b3         c2
                 a2                 b4         c2

我想将a2重命名为a1,然后按ac分组,并加上b的对应值

       df =
                a                  b           c
                a1                 b1+b2       c1
                a1                 b3+b4       c2

所以,像这样

      df  =
                a               value           c
                a1              10              c1
                a2              20              c1
                a2              50              c2
                a2              60              c2

      df  =
               a                value            c
               a1               30               c1
               a1               110              c2

如何做到这一点?

【问题讨论】:

    标签: python-3.x pandas dataframe pandas-groupby


    【解决方案1】:

    怎么样

    >>> res = df.replace({"a": {"a2": "a1"}}).groupby(["a", "c"], as_index=False).sum()
    >>> res
    
        a   c  value
    0  a1  c1     30
    1  a1  c2    110
    

    首先仅在 a 列中将 "a2"s 替换为 "a1",然后按分组和求和。

    要找回原来的列顺序,我们可以reindex

    >>> res.reindex(df.columns, axis=1)
    
        a  value   c
    0  a1     30  c1
    1  a1    110  c2
    

    【讨论】:

      【解决方案2】:

      试试这个:

      df.groupby([df['a'].replace({'a2':'a1'}),'c']).sum().reset_index()
      

      【讨论】:

        猜你喜欢
        • 2021-08-30
        • 1970-01-01
        • 2017-04-14
        • 2022-01-23
        • 2022-11-07
        • 1970-01-01
        • 2018-02-18
        • 2020-09-26
        • 1970-01-01
        相关资源
        最近更新 更多