我有一个包含月相的数据集。我想创建一个新列来计算从第一阶段到第四阶段的天数。一旦Fase One开始,就从1重新开始。所以最后,我的计数器将有 1 到 27 或 28 天。
我检查了这个链接,但我还没有设法再次从 1 开始计数 Counter Column in Pandas DataFrame where it changes based on other column 。我尝试使用 for 但没有给我预期的结果
我尝试过使用 for 和不使用 for
for i in Moon.phaseIdM:
Moon['phaseMDay'] = (Moon.phaseIdM.eq(1)
& Moon.phaseIdM.shift().eq(4)).cumsum() + 1
我期望:
阶段M |阶段Mday
1 | 1
1 | 2
2 | 3
2 | 4
3 | 5
4 | 6
4 | 7
1 | 1
2 | 2 ...
我得到了什么:
阶段M |阶段Mday
1 | 1
1 | 1
2 | 1
2 | 1
3 | 1
4 | 1
4 | 1
1 | 2
2 | 2 ...
预先感谢您的帮助
最佳答案
您可以按如下方式创建阶段 1-阶段 4 石斑鱼:
df['phase_group'] = ((df['phaseM']==1) & (df['phaseM'].shift()==4)).cumsum()
然后分组并进行累计计数:
df['phaseMday'] = df.groupby('phase_group').cumcount()+1
关于Python-根据另一列的更改创建一个计数器列并再次启动计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401471/