Как применить функцию к групповым группам? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь применить функцию к групповым группам.Не мог заставить это работать.Вот мои данные:

ID      DATE        ABROAD
1      2019-1-2        1
2      2019-1-2        0
1      2019-1-4        1
1      2019-1-7        1
2      2019-1-7        1
1      2019-1-8        0
1      2019-1-19       1
2      2019-1-11       1

Я хочу

ID    #ofTravels
1      2
2      1

Я хочу узнать, сколько раз человек путешествовал.Итак, вот моя функция

def no_travels(x):
    x.sort_values('DATE', ascending=True, inplace=True)
    current_state = x.iloc[0].ABROAD
    num_travels = 0
    for state in x['ABROAD']:
         if state != current_state:
              num_travels+=1
              current_state = state
    return num_travels

Как я понял, x - это группа, которая группируется.Что я тут не так делаю?

Спасибо

1 Ответ

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

То есть groupby с diff, мы получаем разные для каждого ID, если diff из ID, равное 0, которые принадлежат одной тройке, он вернет False, если не вернуть True, тогда нам просто нужно sum, чтобы узнать, сколько True у нас

df.groupby('ID')['ABROAD'].apply(lambda x : x.diff().ne(0).sum()-1)
Out[1182]: 
ID
1    2
2    1
Name: ABROAD, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...