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

问题描述 投票:0回答:1

如何在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循环,但是有没有更多的熊猫本机方式来完成这个?

python pandas calculated-columns
1个回答
2
投票

当前一行是“星期日”时,检查当前行是否为“星期一”以生成布尔掩码。然后,对结果执行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
© www.soinside.com 2019 - 2024. All rights reserved.