2016-07-08 8 views
1

Я пытаюсь группировать по одному/двум столбцам, суммировать значение четвертого столбца и найти среднее значение в пятом столбце. Каждая операция должна быть записана в отдельный вывод. Чувствует себя немного сложно, даже начинать.Несколько операций над Dataframe

Вход: Нет заголовка, имеет более 100k строк

StartTime, EndTime,Day,SumCount,UniqueCount 
00:00:00,01:00:00,Mon,13534,594 
01:00:00,02:00:00,Mon,16674,626 
02:00:00,03:00:00,Mon,23736,671 
03:00:00,04:00:00,Mon,16977,671 
00:00:00,01:00:00,Tue,17262,747 
01:00:00,02:00:00,Tue,19072,777 
02:00:00,03:00:00,Tue,18275,785 
03:00:00,04:00:00,Tue,13589,757 
04:00:00,05:00:00,Tue,16053,735 
05:00:00,06:00:00,Tue,11440,636 

Я пытаюсь найти это

  1. GroupBy StartTime & EndTime просуммировать SumCount и медиана UniqueCount
  2. GroupBy Day найти Сумма SumCount и медиану UniqueCount

Я потерял, как положить два типа groupby в одну программу и получить два разных выхода.

ответ

1

Try:

df.groupby(['StartTime', 'EndTime']).agg({'SumCount': ['sum'], 
          'UniqueCount': {'median': lambda x: np.median(x).round(0)}}) 

enter image description here

Или:

df.groupby(['Day']).agg({'SumCount': ['sum'], 
         'UniqueCount': {'median': lambda x: np.median(x).round(0)}}) 

enter image description here

+0

Спасибо! Но я не могу иметь значение float для медианного. Как мне закончить это? –

+1

@SitzBlogz Обновлено сообщение – piRSquared

+0

Большое вам спасибо. Если я получу какую-либо ошибку, напишет обратно. еще раз спасибо –