我有以下示例:
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)
以及以下日期和名称。有谁可以帮助我吗?我尝试了很多方法,但是都没有用。
我将执行以下操作:
df.groupby(["Date", "Developer"]).sum().unstack().diff()
如果您对堆栈不满意,则可以这样做
df.groupby(["Developer", "Date"]).sum().diff().reset_index().set_index(["Date","Developer"])