Как рассчитывать по строкам, основанным на значении кадра данных панд?

1

У меня большой панд данных сеансов (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
Теги:
pandas
python-3.x

2 ответа

3
Лучший ответ

Это может быть быстрее сделать это просто с помощью value_counts():

df.loc[df.session_init == '1', 'ID'].value_counts()

98     3
675    2
345    1
  • 0
    Я получил: Series([], Name: ID, dtype: int64) . Может быть из-за других столбцов? ... здесь я просто поставил два для этого примера
  • 0
    Я вижу проблему .. не строка это число
Показать ещё 2 комментария
3

Первый фильтр показывает только значения "1". Затем groupby столбец идентификаторов и count каждый из этих экземпляров

df[df.session_init == "1"].groupby('ID').count()

     session_init
ID               
98              3
345             1
675             2
  • 0
    Я получил пустой pandas.core.frame.DataFrame
  • 0
    Попробуйте это df[df.session_init.str.strip() == "1"].groupby('ID').count() . Это решает любые проблемы с "1" фактически являющимся чем-то вроде "1 "
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню