【问题标题】:How to sum single row to multiple rows in pandas dataframe using multiindex?如何使用多索引将熊猫数据框中的单行与多行相加?
【发布时间】:2020-05-27 22:18:11
【问题描述】:

我的数据框以季度和周为 MultiIndex:

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 级索引单独调用每一行?

任何见解/指导将不胜感激。

谢谢。

【问题讨论】:

  • 用 .values 添加值
  • 你可以输入答案@YOBEN_S。

标签: python pandas dataframe multi-index


【解决方案1】:

试试这个

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

df.loc 返回一个 DataFrame,用于设置它在列表或数组中查找的值。因此以上。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2018-01-02
      • 2017-04-06
      • 1970-01-01
      • 2021-05-19
      • 2019-02-24
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多