使用 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"])
我有下面的例子:
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"])