2017-01-16 3 views
1

У меня есть DataFrame, и я использую .aggregate({'col1': np.sum}), это будет выполнять суммирование значений в col1 и объединить их вместе. Можно ли выполнить подсчет, что-то вроде .aggregate({'col1': some count function here})?pandas aggregate count в dataframe

+1

'{ 'col1': 'Count'}' или '{ 'col1 ':' size '} 'или' {' col1 ':' nunique '} 'в зависимости от вашего варианта использования. – root

+0

Или 'len' (встроенный), который я предлагаю, является наиболее читаемым из группы. –

+0

'len' обычно медленнее, чем' 'size'', поскольку он является встроенным python вместо numpy под капотом. – root

ответ

3

Вы можете использовать 'size', 'count', или 'nunique' в зависимости от вашего прецедента. Различия между ними являются:

  • 'size': отсчет включая NaN и повторных значений.
  • 'count': кол-во, исключая NaN, но включая повторы.
  • 'nunique': количество уникальных значений, исключая повторы и NaN.

В качестве примера рассмотрим следующую DataFrame:

df = pd.DataFrame({'col0': list('aabbcc'), 'col1': [1, 1, 2, np.nan, 3, 4]}) 

    col0 col1 
0 a 1.0 
1 a 1.0 
2 b 2.0 
3 b NaN 
4 c 3.0 
5 c 4.0 

Затем, используя три функции, описанные в:

df.groupby('col0')['col1'].agg(['size', 'count', 'nunique']) 

     size count nunique 
col0      
a  2  2  1 
b  2  1  1 
c  2  2  2 
+0

Спасибо! «кол-во» было тем, что мне нужно. –