Количество уникальных записей по нескольким столбцам в панде df - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь вернуть общее количество уникальных записей в pandas df.Это определяется значениями в Columns ['D','F'].Таким образом, в столбце D. есть определенные места. Столбец F показывает, сколько событий происходит в этих местах.Для каждого события может быть несколько функций, но меня интересует только общее количество событий в каждом месте.Так сколько подсчетов в столбце F для каждого места в столбце D

Таким образом, вывод для примера ниже будет

ABC-Thu = 2

DEF-Thu = 1

import pandas as pd


d = ({
    'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '09:00:00', 'XX','09:15:00','XX','09:21:00','XX','09:30:00','XX','09:40:00','XX'],
    'D' : ['ABC-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--'],
    'E' : ['Num:','','Num:','','Num:','','Num:','','Num:', '','Num:','','Num:','','Num:', '','Num:', ''],
    'F' : ['1','','1','','1','','1','','1', '','2','','2','','1', '','2',''],   
    'A' : ['A','','A','','A','','A','','A','','A','','A','','A','','A',''],           
    'B' : ['Stop','','Res','','Stop','','Start','','Res','','Stop','','Res','','Start','','Start','']
})

df = pd.DataFrame(data=d)

Вывод:

    A      B         C        D     E  F
0   A   Stop  08:00:00  ABC-Thu  Num:  1
1                   XX       --         
2   A    Res  08:10:00  ABC-Thu  Num:  1
3                   XX       --         
4   A   Stop  08:41:42  DEF-Thu  Num:  1
5                   XX       --         
6   A  Start  08:50:00  ABC-Thu  Num:  1
7                   XX       --         
8   A    Res  09:00:00  DEF-Thu  Num:  1
9                   XX       --         
10  A   Stop  09:15:00  ABC-Thu  Num:  2
11                  XX       --         
12  A    Res  09:21:00  ABC-Thu  Num:  2
13                  XX       --         
14  A  Start  09:30:00  DEF-Thu  Num:  1
15                  XX       --         
16  A  Start  09:40:00  ABC-Thu  Num:  2
17                  XX       --       

Если я запускаю это, используя приведенный ниже код, я получаю 4 из-за - в столбце D

df1 = df.groupby(['F', 'D']).ngroups

Вывод:

4

Мне также было интересно, было либолее простой способ определить общее количество для каждого места для столбца D, F. Вместо общего количества.Этот код является лишь примером.В моем наборе данных может быть более 50 различных мест для столбца D и до 10 событий для столбца F. Чтобы добавить дополнительные ограничения, места меняются для каждого файла.Поэтому мне нужен быстрый способ определить количество для каждой встречи.

Есть ли более эффективный способ, чем подсчет по месту.Я не уверен, переосмысливаю это или нет.Что также сбивает с толку, так это то, что функции в столбце B могут различатьсяЭто не всегда в повторяющемся порядке.

1 Ответ

0 голосов
/ 26 мая 2018

groupby и nunique

df.groupby('D').F.nunique().drop('--')

ABC-Thu    2
DEF-Thu    1
Name: F, dtype: int64
...