使用 Pandas DataFrame 中的分组数据和日期之间的差异

Working with grouped data and difference between dates in Pandas DataFrame

我有下面的例子:

data = {"Date":['13/02/2020','13/02/2020','13/02/2020','13/02/2020','14/02/2020','14/02/2020','14/02/2020','14/02/2020',],
        "Developer":['Name1', 'Name2', 'Name3', 'Name3', 'Name2', 'Name2', 'Name1', 'Name4'],
        "Project":['P1','P2','P4','P3','P1','P3','P2','P4' ],
        "Hours":[1,5,8,4,8,9,4,30]}
df = pd.DataFrame(data)

我的目标是按日期、开发人员和项目进行汇总和分组,并查看接下来几天之间的差异。我可以解释得更好。

我做了 groupby 函数并得到了以下结果:

df.groupby(["Date", "Developer"]).sum()

13/02/2020  Name1   1
            Name2   5
            Name3   12
14/02/2020  Name1   4
            Name2   17
            Name4   30

到此为止,好的。我从分组结果中想要的是一个新的系列或数据框,其对应值 14/02/2020 Name1 为 4,对应值 13/02/2020 Name1 为 1,导致 3. 我想为每一天和每个名字自动执行此操作。我想获得一个新的 Series/Data 框架,其中包含日期、名称和后一天之间的差异:

df_new = 
14/02/2020  Name1  3  (4 - 1)
14/02/2020  Name2  12 (17 - 5)
14/02/2020  Name3  -12 (0 - 12)
14/02/2020  Name4  30  (30 - 0)

并为它提供以下日期和名称。有谁可以帮助我吗?我尝试了很多方法,但 none 都奏效了。

我会做以下事情:

df.groupby(["Date", "Developer"]).sum().unstack().diff()

如果你对堆叠不满意,那么你可以

df.groupby(["Developer", "Date"]).sum().diff().reset_index().set_index(["Date","Developer"])