gpt4 book ai didi

python - pandas groupby 后缺少列

转载 作者:太空狗 更新时间:2023-10-29 21:49:59 24 4
gpt4 key购买 nike

我有一个 pandas 数据框 df。我将它按 3 列分组,然后计算结果。当我这样做时,我丢失了一些信息,特别是 name 列。此列与 desk_id 列 1:1 映射。无论如何都将两者都包含在我的最终数据框中?

这是数据框:

   shift_id    shift_start_time      shift_end_time        name                   end_time       desk_id  shift_hour
0 37423064 2014-01-17 08:00:00 2014-01-17 12:00:00 Adam Scott 2014-01-17 10:16:41.040000 15557987 2
1 37423064 2014-01-17 08:00:00 2014-01-17 12:00:00 Adam Scott 2014-01-17 10:16:41.096000 15557987 2
2 37423064 2014-01-17 08:00:00 2014-01-17 12:00:00 Adam Scott 2014-01-17 10:52:17.402000 15557987 2
3 37423064 2014-01-17 08:00:00 2014-01-17 12:00:00 Adam Scott 2014-01-17 11:06:59.083000 15557987 3
4 37423064 2014-01-17 08:00:00 2014-01-17 12:00:00 Adam Scott 2014-01-17 08:27:57.998000 15557987 0

我这样分组:

grouped = df.groupby(['desk_id', 'shift_id', 'shift_hour']).size()
grouped = grouped.reset_index()

这是结果,缺少 name 列。

    desk_id  shift_id  shift_hour  0
0 14468690 37729081 0 7
1 14468690 37729081 1 3
2 14468690 37729081 2 6
3 14468690 37729081 3 5
4 14468690 37729082 0 5

此外,无论如何要将计数列重命名为“计数”而不是“0”?

最佳答案

您需要按组在 groupby 中包含 'name':

In [43]:

grouped = df.groupby(['desk_id', 'shift_id', 'shift_hour', 'name']).size()
grouped = grouped.reset_index()
grouped.columns=np.where(grouped.columns==0, 'count', grouped.columns) #replace the default 0 to 'count'
print grouped
desk_id shift_id shift_hour name count
0 15557987 37423064 0 Adam Scott 1
1 15557987 37423064 2 Adam Scott 3
2 15557987 37423064 3 Adam Scott 1

如果name-to-id的关系是多对一的类型,假设我们有一个pete scott对应同一组数据,结果会变成:

    desk_id  shift_id  shift_hour        name  count
0 15557987 37423064 0 Adam Scott 1
1 15557987 37423064 0 Pete Scott 1
2 15557987 37423064 2 Adam Scott 3
3 15557987 37423064 2 Pete Scott 3
4 15557987 37423064 3 Adam Scott 1
5 15557987 37423064 3 Pete Scott 1

关于python - pandas groupby 后缺少列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com