如何计算 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
我有以下数据框:
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