我拥有的是一个像这样的数据框:
total_sum pid
5 2
1 2
6 7
3 7
1 7
1 7
0 7
5 10
1 10
1 10
我想要的是另一列,pos例如:
total_sum pid pos
5 2 1
1 2 2
6 7 1
3 7 2
1 7 3
1 7 3
0 7 4
5 10 1
1 10 2
1 10 2
背后的逻辑是:
posnew 的初始pid值为1。
如果pid没有更改但发生total_sum更改,则 的值pos将增加 1(例如前两行),否则 的值pos是先前的值(例如最后两行)。
我尝试过的:
df['pos'] = 1
df['pos'] = np.where(((df.pid.diff(-1)) == 0 & (df.total_sum.diff(-1) == 0)),
df.pos, (np.where(df.total_sum.diff(1) < 1, df.pos + 1, df.pos )))
目前,我正在 Excel 工作表中执行此操作,首先在 的第一列中手动写入 1 pos,然后在 的第二个单元格中写入公式pos:
=IF(A3<>A2,1,IF(B3=B2,C2,C2+1))
跃然一笑