如何在groupby-ed组上应用函数?

问题描述 投票:0回答:1

我正在尝试将一个函数应用于groupby组。无法使它工作。这是我的数据:

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是一个群体组合。我在这做错了什么?

谢谢

pandas pandas-groupby
1个回答
0
投票

这是groupbydiff,我们得到不同的每个ID,如果diffID等于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
© www.soinside.com 2019 - 2024. All rights reserved.