Pandas DataFrame 中的计数器列,它根据其他列进行更改

Counter Column in Pandas DataFrame where it changes based on other column

如何在 pandas 数据框中添加新列,我希望该列具有基于其他列标准的计数器,例如(显示所需的输出):

    WeekCounter  DayofWeeek
    1            Monday
    1            Monday
    1            Tuesday
    1            Sunday
    2            Monday
    2            Wednesday
    2            Thursday
    2            Sunday
    3            Monday
    3            Monday
    3            Monday

如何创建一个列,当列值从星期日到星期一发生变化时充当计数器?我最初的尝试是使用带有嵌套 if 语句的 for 循环,但是是否有更 pandas-native 的方式来完成这个?

当上一行为"Sunday"时检查当前行是否为"Monday"以生成布尔掩码。然后,对结果执行cumsum

df['WeekCounter'] = (df.DayofWeek.eq('Monday') 
        & df.DayofWeek.shift().eq('Sunday')).cumsum() + 1

df

    WeekCounter  DayofWeek
0             1     Monday
1             1     Monday
2             1    Tuesday
3             1     Sunday
4             2     Monday
5             2  Wednesday
6             2   Thursday
7             2     Sunday
8             3     Monday
9             3     Monday
10            3     Monday