如何计算 pandas 中分类列的变化

how to count a change in the categorical column in pandas

我有以下数据框:

OUTLET_UNQ_CODE  Category_Code   month

0   2018020000065   SSSI    January 21

1   2018020000066   SSSI    January 21

2   2018020000067   SSSI    January 21

...

512762  2021031641195   CH  March 21

512763  2021031642445   CH  March 21

512764  2021031643357   GM  March 21

512765  2021031643863   GM  March 21

很少有人 OUTLET_UNQ_CODE 在一个月内和下个月改变了他们的 Category_Code。我需要计算每个出口完成的跃点数。例如:如果 2021031643863 在 1 月 21 日有 Category_code GM,1 月 21 日有 CH,2 月有 CH,3 月有 Kirana。这将被计为 2 跳。

这是我试过的:

s=pd.to_numeric(new_df.Category_Code,errors='coerce') 

df=new_df.assign(New=s.bfill())[s.isnull()].groupby('OUTLET_UNQ_CODE').agg({'Category_Code':list}) 

df.reset_index(inplace=True) 

O/P 是:

   OUTLET_UNQ_CODE  Category_Code

0   2021031643863   [GM,CH,CH,Kirana]

无论是否有更好的方法从头开始,根据您的输出实现目标,这里有一段代码可以获取列表中的更改数量:

cat_lst = ['GM','CH','CH','Kirana']
a = sum((1 for i,x in enumerate(cat_lst[:-1]) if x!= cat_lst[i+1]))

# in this case the result of a is 2