如何使用多索引将数据帧中的单行相加为多行?

2024-09-24 06:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

以季度和周为多索引的我的数据帧:

Quarter   Week      X   Y   Z
Q1        Q1-W01    1   1   1
          Q1-W02    2   2   2
          Q1-W03    3   3   3
          Q1-W04    4   4   4
Q2        Q2-W15    15  15  15
          Q2-W16    16  16  16
          Q2-W17    17  17  17
          Q2-W18    18  18  18

我试图将Q1(Q1-W04)中的最后一行添加到Q2(Q2-W15到Q2-W18)中的所有行。这就是我希望数据帧的外观:

Quarter   Week      X   Y   Z
Q1        Q1-W01    1   1   1
          Q1-W02    2   2   2
          Q1-W03    3   3   3
          Q1-W04    4   4   4
Q2        Q2-W15    19  19  19
          Q2-W16    20  20  20
          Q2-W17    21  21  21
          Q2-W18    22  22  22

当我尝试只指定级别0索引和特定行时,所有Q2值都将变为NaN

df.loc['Q2'] += df.loc['Q1','Q1-W04'] 

Quarter   Week      X   Y   Z
Q1        Q1-W01    1   1   1
          Q1-W02    2   2   2
          Q1-W03    3   3   3
          Q1-W04    4   4   4
Q2        Q2-W15    NaN NaN NaN
          Q2-W16    NaN NaN NaN
          Q2-W17    NaN NaN NaN
          Q2-W18    NaN NaN NaN

我发现,如果同时指定0级和1级索引,就不会有问题

df.loc['Q2','Q2-W15'] += df.loc['Q1','Q1-W04']

Quarter   Week      X   Y   Z
Q1        Q1-W01    1   1   1
          Q1-W02    2   2   2
          Q1-W03    3   3   3
          Q1-W04    4   4   4
Q2        Q2-W15    19  19  19
          Q2-W16    16  16  16
          Q2-W17    17  17  17
          Q2-W18    18  18  18

是否有一种方法可以将特定行与Q2 0级索引中的所有行相加,而不必通过其1级索引单独调用每一行

如有任何见解/指导,将不胜感激

多谢各位


Tags: dfnanlocweekq2q1quarterw03
2条回答

试试这个

df.loc['Q2'] = (df.loc['Q2'] + df.loc['Q1', 'Q1-W04']).values.tolist()

loc返回一个数据帧,以设置它在列表或数组中查找的值。因此,上述情况

在您的情况下,我们应该消除index的影响

df.loc['Q2','Q2-W15'] += df.loc['Q1','Q1-W04'].values

相关问题 更多 >