Python Pandas: как перебирать строки с общим значением столбца - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть датафрейм, похожий на:

In [3]df
Out[3]: 
   customer  monthly_revenue
0        a                2
1        a                4
2        a                1
3        b                3
4        b                3
5        b                3
6        b                2
7        b                5
8        c               10
9        c                5

Для каждого клиента я хочу просмотреть их ежемесячные данные о доходах и подсчитать, сколько точек данных превышает или ниже определенного порогового значения. Каков наилучший способ сделать итерацию здесь? Результат, который я хочу:

      customer  rev_over_2  rev_over_5
0        a        0.33         0.0
1        b        0.80         0.2
2        c        1.00         1.0

Второй столбец означает процент точек данных, превышающих 2, а третий столбец означает процент точек данных, превышающих 5.

Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Использование Series groupby + transform sum

thresh=2
(df['monthly_revenue']>thresh).groupby(df.customer).transform('sum')
Out[175]: 
0    1.0
1    1.0
2    1.0
3    4.0
4    4.0
5    4.0
6    4.0
7    4.0
8    2.0
9    2.0
Name: monthly_revenue, dtype: float64

Обновление

pd.crosstab(df.customer,(df['monthly_revenue']>thresh),normalize ='index')[True]
Out[191]: 
customer
a    0.333333
b    0.800000
c    1.000000
Name: True, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...