Panda Group по времени и количеству значений столбца - PullRequest
0 голосов
/ 07 января 2019

Допустим, у меня есть массив с временем события и журнала, например:

Time             Event
01/01/2019 8h00  X
01/01/2019 8h10  Y
01/01/2019 9h10  X
02/01/2019 7h10  Z
02/01/2019 8h10  Y
02/01/2019 9h10  Y
...

Я хочу получить такой вывод:

01/01/2019 [(X,2), (Y,1)]
02/01/2019 [(Y, 2), (Z,1)]
... 

На данный момент мне удается только сгруппировать по времени и считать все события или перечислить все уникальные события

data = pd.read_csv('my.csv')    
s1 = data['Time'].groupby(data['Time'].dt.floor('d')).size()    
s2 = data.groupby(data['Time'].dt.floor('d')['Event'].unique().reset_index()

s1 вывод:

01/01/2019 3
02/01/2019 3

s2 вывод:

01/01/2019 [X, Y]
02/01/2019 [Y, Z]

Как мне добиться группирования по времени и подсчета количества каждого события?

1 Ответ

0 голосов
/ 07 января 2019

Используйте пользовательскую лямбда-функцию с value_counts:

df = (data.groupby(data['Time'].dt.floor('d'))['Event']
          .apply(lambda x: list(x.value_counts().items()))
          .reset_index())
print (df)
        Time             Event
0 2019-01-01  [(X, 2), (Y, 1)]
1 2019-02-01  [(Y, 2), (Z, 1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...