2014-09-25 3 views
1

Мне часто нужно знать, сколько записей у меня есть в каждой группе в кадре данных в Пандах. Следующее делает это, но возвращает одно значение для каждого столбца в моем фреймворке.Количество групп. Почему каждый столбец?

df.groupby(['A', 'B', 'C']).count() 

То есть, если у меня есть, скажем 20 столбцов (где A, B и C три из них), он будет возвращать 17 счетчики, все одинаковые (по крайней мере, каждый раз, когда я сделал это) в пределах каждого группа.

  1. В чем причина этого?
  2. Есть ли способ ограничить счет только одним столбцом? (или вернуть его только одно значение для каждой группы?)
  3. Будет ли это ускорять подсчеты каким-либо образом?

Метод dataFrameGroupBy.count не кажется, есть аргумент, чтобы указать на столбцы, чтобы сделать счет (я не мог найти его на API ref)

+1

Re # 2: Вы можете выбрать столбец D с этим синтаксисом: 'df.groupby ('A') ['D']. Count()'. Странно, что я не могу найти это в стандартной документации, но вот старое сообщение в блоге (смотрите ближе к середине): http://wesmckinney.com/blog/?p=125 – JohnE

ответ

1

groupby(...).count() возвращает количество , не нулевой значения в каждом столбце. Поэтому потенциально это может быть разным для каждого столбца.

пример:

>>> df 
    jim joe jolie 
0 4 NaN  4 
1 8 0 NaN 
>>> df.groupby('jim').count() 
    joe jolie 
jim    
4  0  1 
8  1  0 

.groupby(...).size() возвращает size каждой группы.

+0

А, это объясняет это. Я думаю, что мне нужно 'size()'. Было бы неплохо иметь возможность указать столбец для 'count'. Возможно, это работает. Я посмотрю, смогу ли я сделать PR по этому поводу. –

Смежные вопросы