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
如何在 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