将总和平均值分配给深度嵌套的列熊猫多索引

时间:2020-07-15 01:40:57

标签: python pandas multi-index

我有一个奇怪的多重索引,如下所示:

test_df = {}
for letter in ['A', "B"]:
  for number in range(2, 4):
    for other_number in range(number):
      for id_ in range(100, 105):

        test_df[(letter,  number, other_number,  "int", id_)] = np.random.randint(10)
        test_df[(letter, number,  other_number, "float", id_)] = np.random.random(1)
# note: there is prob a better way of doing this, but it works
test_df = pd.DataFrame(test_df).stack().loc[0]

enter image description here

我想在other_number级别添加总数和平均值。 例如,对于总计,我可以轻松计算

totals = test_df.loc[:, (slice(None), slice(None), slice(None), 'int')].sum(axis=1, level=[0, 1])

        A   B
    2   3   2   3
100 7   16  5   15
101 10  13  15  11
102 4   10  16  16
103 4   14  11  14
104 13  22  4   7

但是任务给我带来了麻烦。

test_df.loc[:, (slice(None), slice(None), slice(None), 'total')] = totals

具体

KeyError: 'total'

我知道total不在我的键中,但这很重要:我想创建一个新列。 所以我的问题是:

  • 如何分配总数?
  • 如何分配浮动平均值(在同一水平上?)

0 个答案:

没有答案