如何基于Year和Week of Year唯一组合生成累计序号列Week Order
解决方法
首先是你提供的原始数据代码:
import pandas as pd df_dict = { 'Year' : [2021, 2021, 2021, 2021, 2022, 2022, 2022, 2022], 'Week of Year' : [1, 1, 2, 2, 10, 10, 11, 11] } df = pd.DataFrame(df_dict)
要生成Week Order列,对Year和Week of Year的唯一组合进行连续累计编号,这里有两种简单的实现方式:
方法一:使用pd.factorize()
通过将两列的组合转为元组,再用factorize生成连续标签,最后加1让编号从1开始:
df['Week Order'] = pd.factorize(df[['Year', 'Week of Year']].apply(tuple, axis=1))[0] + 1
方法二:使用groupby+ngroup()
按Year和Week of Year分组后,用ngroup()直接获取组的序号,同样加1调整起始编号:
df['Week Order'] = df.groupby(['Year', 'Week of Year']).ngroup() + 1
执行任意一种方法后,得到的结果如下:
Year Week of Year Week Order 0 2021 1 1 1 2021 1 1 2 2021 2 2 3 2021 2 2 4 2022 10 3 5 2022 10 3 6 2022 11 4 7 2022 11 4
内容的提问来源于stack exchange,提问作者NonSleeper
相关产品推荐
相关产品推荐

