У меня большой панд данных сеансов (aprox 100):
session_init ID
0 1 675
1 MID 675
2 MID 675
3 MID 675
4 MID 675
5 MID 675
6 1 345
7 MID 345
8 MID 345
9 MID 345
10 MID 345
11 MID 345
12 MID 345
13 1 098
14 MID 098
15 1 675
16 MID 675
17 MID 675
18 MID 675
19 MID 675
20 MID 675
21 MID 675
22 1 098
23 MID 098
24 1 098
25 MID 098
Как вы можете видеть в приведенном выше кадре данных панды, запуск seassion обозначается 1
. Есть ли какая-либо функция pandas, которая позволяет мне подсчитывать значения каждого сеанса? Например, в приведенном выше массиве данных идентификатор 675
запускает сеанс 2 раза. Таким образом, подсчет значений должен быть:
675 : 2
345 : 1
098 : 3
Это может быть быстрее сделать это просто с помощью value_counts()
:
df.loc[df.session_init == '1', 'ID'].value_counts()
98 3
675 2
345 1
Первый фильтр показывает только значения "1". Затем groupby
столбец идентификаторов и count
каждый из этих экземпляров
df[df.session_init == "1"].groupby('ID').count()
session_init
ID
98 3
345 1
675 2
pandas.core.frame.DataFrame
df[df.session_init.str.strip() == "1"].groupby('ID').count()
. Это решает любые проблемы с "1"
фактически являющимся чем-то вроде "1 "
Series([], Name: ID, dtype: int64)
. Может быть из-за других столбцов? ... здесь я просто поставил два для этого примера