【问题标题】:How to add up two consecutive rows in a multiindex dataframe repeating the last one in the group if it has an odd number of rows?如果多索引数据帧的行数为奇数,如何将重复组中最后一行的多索引数据帧中的两行相加?
【发布时间】:2022-07-06 16:33:55
【问题描述】:

使用以下数据框df1:

        0   1
0   0   8   2
    1   13  5
    2   11  9
    3   4   1
    4   83  3
1   0   25  3
    1   22  4
    2   87  8
    3   60  8
    4   33  7

如果内部层数是奇数,如何从内部层的顶部连续添加两行,使最后一行保持不变?我想要的是创建一个新的数据框 df2,如下所示:

        0   1
0   0   21  7
    1   15  10
    2   83  3
1   0   47  7
    1   147 16
    2   33  7

df2 中的第 0 行是 df1 中第 0 行和第 1 行的总和,df2 中的第 1 行是 df1 中第 2 行和第 3 行的总和,df2 中的第 2 行只是 df1 中第 4 行的副本,因为 df1 有奇数行。如果行数是偶数,当然如果我有 6 行而不是 5 行,我也需要执行加法。

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    用途:

    df = df.groupby([df.index.get_level_values(0), df.index.get_level_values(1) // 2]).sum()
    print (df)
           0   1
    0 0   21   7
      1   15  10
      2   83   3
    1 0   47   7
      1  147  16
      2   33   7
    

    或者:

    df = df.rename_axis(['i1','i2']).groupby(['i1', df.index.get_level_values(1) // 2]).sum()
    print (df)
            0   1
    i1           
    0  0   21   7
       1   15  10
       2   83   3
    1  0   47   7
       1  147  16
       2   33   7
    

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 2022-12-17
      • 2018-05-18
      • 2014-04-28
      相关资源
      最近更新 更多