как отфильтровать строки во фрейме данных и взять сумму - PullRequest
1 голос
/ 11 апреля 2019

Я новичок в пандах У меня есть датафрейм, и у него есть три столбца со значениями

nTimeStamp       nMessageCode   nIOC
1544114048       12073           0
1544114048       12075           0         
1544114048       12073           1
1544114048       12075           1
1544114049       12074           0         
1544114049       12073           0
1544114049       12075           0

Я хочу получить сумму согласно nTimeStamp на основе фильтра, как показано ниже

код SQL

SELect nTimeStamp, SUM(nFilter) nCount
 FROM (
Select nTimeStamp case when nMessageCode in (12073,12074)
                       then 1
                       when nMessageCode = 12075 and nIOC = 0
                       then 1
                       else 0
                   end 'nFilter'   
      )
 group by nTimeStamp

ожидаемый результат будет

nTimestamp       nCount
1544114048         3
1544114049         3

Как мне добиться того же. Пожалуйста, помогите

1 Ответ

0 голосов
/ 11 апреля 2019

Создание логической маски и подсчет True значений по Series.groupby с sum:

m = (df['nMessageCode'].isin((12073,12074)) | 
     (df['nMessageCode'].eq(12075) & df['nIOC'].eq(0)))

df1 = m.groupby(df['nTimeStamp']).sum().astype(int).reset_index(name='nCount')
print (df1)
   nTimeStamp  nCount
0  1544114048       3
1  1544114049       3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...