考虑以下数据框。
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 - - - -
例如,我在 Yesterday 和 Yesterday-1 列中有一些值,而 Difference 列需要采用类似的格式这个:
df.loc['2021-02-11', 'Difference'] = df.loc['2021-02-11', 'Orders] - df.loc['2021-02-10', 'Orders]
什么实际上不起作用,我需要每个指标都相同,我该怎么做?我是否创建一个 for 循环 并使用 iloc 并检查每个指标以填充差异列? 谢谢!
答案 0 :(得分:0)
为了清楚起见,您应该编辑您的问题,但我认为您需要:
df['Difference'] = df['Yesterday'] - df.groupby(level=1)['Yesterday'].shift()