Как сделать Pandas групповой со своими критериями? - PullRequest
1 голос
/ 10 марта 2020

Рассмотрим следующий кадр данных

d = {'N': [1, 2, 1, 2], 'NV': [50, 50,200,200], 'VAL' : [100,0,10,0]}
df = pd.DataFrame(data = d)

, дающий

   N  NV  VAL
0  1  50  100
1  2  50    0
2  1  200  10
3  2  200   0

Я бы хотел сгруппировать, чтобы получить для каждого NV количество записей VAL, которые являются строго положительными. Результат, который я получу sh, следующий:

   NV  VAL
0  50   1
1  200  1

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 10 марта 2020

df.query("VAL > 0").groupby("NV").size()

или

df.groupby("NV").VAL.agg(lambda y: (y > 0).sum())

0 голосов
/ 10 марта 2020

попробуйте

df['VAL'] = df.loc[df['VAL']>0].groupby(df['NV']).transform('count')
df.dropna(axis=0,inplace=True)
0 голосов
/ 10 марта 2020

Попробуйте:

df[df.VAL>0].groupby('NV').size().reset_index().rename(columns={0:'VAL'})

    NV  VAL
0   50    1
1  200    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...