我正在尝试将一个函数应用于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是一个群体组合。我在这做错了什么?
谢谢
这是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