python - 按一列分组并找到编号。另一列中的唯一值

标签 python pandas dataframe pandas-groupby

我有一个数据框如下,

         date  hour staff
0  2019-10-01     6     A
1  2019-10-01     6     B
2  2019-10-01     6     C
3  2019-10-02     6     D
4  2019-10-02     6     B
5  2019-10-02     6     A
6  2019-10-03     6     B
7  2019-10-03     6     B
8  2019-10-03     6     B
9  2019-10-01     7     D
10 2019-10-01     7     A
11 2019-10-01     7     B
12 2019-10-01     7     C
13 2019-10-02     7     D
14 2019-10-02     7     C
15 2019-10-02     7     A
16 2019-10-03     7     B
17 2019-10-03     7     B
18 2019-10-03     7     A

我想计算每小时独特员工的平均值,如下所示

小时     unique_staff
6            2
7            3

说明:
6 点,
Unique_staff = 2
10 月 1 日:3(A,B,C)+ 10 月 2 日:3(D,B,A)+ 10 月 3 日:1 (B) = 3+3+1=7/3(唯一日期数量)~2

7 点,
Unique_staff = 3
10月1日: 4(D,A,B,C)+ 10月2日: 3(D,C,A)+ 10月3日: 2 (B, A) = 4+3+2=9/3(唯一的数量日期)~3

最佳答案

df.groupby(['hour', 'date'])['staff'].nunique().reset_index()\
  .groupby('hour')['staff'].mean().round()

>>> output

6   2.0
7   3.0

编辑:

评论中anky_91的解决方案要快得多,绝对应该使用:

df.groupby(['date','hour'])['staff'].nunique().mean(level=1).round()

关于python - 按一列分组并找到编号。另一列中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59222797/

相关文章:

python - 在 Django 中自定义 JSON 序列化器

Python:Struct.pack(format, [...]),虽然格式几乎相同,但打包数据的大小不同

python - 使用 pandas 的字符串列表交叉引用多列的有效方法

python - "Pandorable"在数据帧切片中返回索引的方法

python - 如何在 Pandas 中选择 'last business day of the month'?

python - 如何使用python将一张图像的相位和不同图像的幅度组合成一张图像

python - 何时在 pytorch Lightning 中使用prepare_data 与 setup?

python - Pandas get_level_values 表现出乎意料

Python Pandas、Dataframe 和从 excel 文件中读取

python - 随机播放 DataFrame 行