python - 列值将增加并重置另外两列的更改

标签 python pandas pandas-groupby

我有数据框,我想继续增加值直到 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+transformlambda

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/

相关文章:

python - 用Python读取jpeg文件,将其编码为Unicode并放入protobuf中

python - 运行 PyQt 应用程序时出现空白表单

python - 运行时警告 - Greenlet.greenlet 大小已更改?

python-3.x - 如何每 5 行后从列中选择值并将值赋给变量

python - 在类里面构建一系列 df 操作的更好方法

python - 按条件从不同列和索引获取值

python - cv2 videowriter,写得很好,但在应用程序关闭时抛出错误

python - Pandas - 填充时间序列数据中缺失的时间

python - Pandas 聚合动态列名

python - 使用条件按 col 搜索值 col 的第一次出现?