我有数据框,我想继续增加值直到 val
更改和何时 id
更改重置 count
值(value)
data = [['p1',1],
['p1',1],
['p1',2],
['p2',3],
['p2',5],
['p3',1],
['p3',2],
['p3',1]]
df = pd.DataFrame(data = data,columns = ['id','val'])
期望输出 id val count
0 p1 1 1
1 p1 1 1
2 p1 2 2
3 p2 3 1
4 p2 5 2
5 p3 1 1
6 p3 2 2
7 p3 1 3
我已经到了这里df['count'] = (df.val.diff() != 0).cumsum()
这仅在 val
时改变id
时列更改但不重置列更改
最佳答案
你可以试试groupby+transform
与 lambda
df['count'] = df.groupby("id")['val'].transform(lambda x: x.ne(x.shift()).cumsum())
print(df)
id val count
0 p1 1 1
1 p1 1 1
2 p1 2 2
3 p2 3 1
4 p2 5 2
5 p3 1 1
6 p3 2 2
7 p3 1 3
关于python - 列值将增加并重置另外两列的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63220183/