计算python列中最新的相同值

计算python列中最新的相同值,python,pandas,Python,Pandas,我有这样的数据: id a b c d 1 y y z z 2 y z y y 3 y y y y id count_y 1 2 2 1 3 4 我想从上一次更改的列a b c d中计算值“y”,如下所示: id a b c d 1 y y z z 2 y z y y 3 y y

我有这样的数据:

   id   a   b   c   d
    1   y   y   z   z
    2   y   z   y   y
    3   y   y   y   y
id    count_y
1     2
2     1
3     4
我想从上一次更改的列
a b c d
中计算值
“y”
,如下所示:

   id   a   b   c   d
    1   y   y   z   z
    2   y   z   y   y
    3   y   y   y   y
id    count_y
1     2
2     1
3     4

你能帮我吗?

你可以在
设置索引之后执行
cumprod

s = df.set_index('id').eq('y').cumprod(axis = 1).sum(axis = 1)
s = s.reset_index(name='count_y')
s
Out[33]: 
   id  count_y
0   1        2
1   2        1
2   3        4

作为你评论中的解释,我想你可以试试这个

df.set_index('id').eq('y').cummin(1).sum(1)

Out[11]:
id
1    2
2    1
3    4
dtype: int64

对于所需输出中的第二行,您的意思是将
count_y
设为3吗?@Jeff不,它应该是1,因为我不想在将值更改为xso后对其进行计数,我想它是从右到左的“最新的”?从
d
a
?我想计算最近it从
a
b
的变化。像id
2
一样,它在列
b
中发生变化,所以我将其计算为
1
@亚当·厄尔8