Сочетание nunique и где в пандах - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь найти для каждого идентификатора: количество значений, равное 0,0 и превышающее 0,0

Вход DF:

ID .   value
1 .     0.0
1 .    10.0
1 .    30.0
1 .     0.0
1 .     25.0 
2 .     0.0
2 .     4.0
2 .     0.0
2 .     13.0

Выход DF:

id .    count (value = 0.0) .   count(value > 0.0)
1             2                      3
2 .           2                      2

Код:

df.groupby("ID")["value"].nunique()

, который просто возвращает количество уникальных значений для каждого идентификатора, я не уверен, как объединить это if-else (0.0 и значение> 0.0) в этой команде. Любые предложения, пожалуйста

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Попробуйте это:

df['equal'] = df.groupby('ID').apply(lambda x: sum(x==0))
df['greater'] = df.groupby('ID').apply(lambda x: sum(x>0))
0 голосов
/ 03 июля 2018

Вы можете сделать с

pd.crosstab(df.ID,df.value.gt(0))
Out[392]: 
value  False  True 
ID                 
1          2      3
2          2      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...