处理分组数据和Pandas DataFrame中日期之间的差异

问题描述 投票:0回答:1

我有以下示例:

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。我想针对每一天和每个名称自动执行此操作。我想获得一个带有日期,名称和第二天之间的差的新系列/数据框:

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)

以及以下日期和名称。有谁可以帮助我吗?我尝试了很多方法,但是都没有用。

python pandas difference
1个回答
0
投票

我将执行以下操作:

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

如果您对堆栈不满意,则可以这样做

df.groupby(["Developer", "Date"]).sum().diff().reset_index().set_index(["Date","Developer"])
© www.soinside.com 2019 - 2024. All rights reserved.