熊猫多索引

时间:2021-02-13 15:43:21

标签: python pandas multi-index

考虑以下数据框。

    In [3]: idx = pd.MultiIndex.from_product([['2021-02-10', '2021-02-11', '2021-02-12'],
   ...:                                   ['Orders', 'GMV', 'AOV']],
   ...:                                  names=['Date', 'Metric'])
   ...: col = ['Yesterday', 'Yesterday-1', 'Difference', 'Difference-1']
   ...: 
   ...: df = pd.DataFrame('-', idx, col)
   ...: print(df)
                  Yesterday Yesterday-1 Difference Difference-1
Date       Metric
2021-02-10 Orders         -           -          -            -
           GMV            -           -          -            -
           AOV            -           -          -            -
2021-02-11 Orders         -           -          -            -
           GMV            -           -          -            -
           AOV            -           -          -            -
2021-02-12 Orders         -           -          -            -
           GMV            -           -          -            -
           AOV            -           -          -            -

例如,我在 YesterdayYesterday-1 列中有一些值,而 Difference 列需要采用类似的格式这个:

df.loc['2021-02-11', 'Difference'] = df.loc['2021-02-11', 'Orders] - df.loc['2021-02-10', 'Orders]

什么实际上不起作用,我需要每个指标都相同,我该怎么做?我是否创建一个 for 循环 并使用 iloc 并检查每个指标以填充差异列? 谢谢!

1 个答案:

答案 0 :(得分:0)

为了清楚起见,您应该编辑您的问题,但我认为您需要:

df['Difference'] = df['Yesterday'] - df.groupby(level=1)['Yesterday'].shift()