Python 向后循环以查找表中的相等值

Python 向后循环以查找表中的相等值,python,pandas,loops,for-loop,Python,Pandas,Loops,For Loop,我是Python新手,正在尝试做一个非常简单的循环来计算每行前面有多少个相等的值。这里有一个例子 这是我试过的,但似乎做不好 df['count'] = 0 count = 1 for i in df.index: if df['CD'].loc[i] == 'C': for j in range(count): if j<i: if df['CD'].loc[i] == df['CD'].d

我是Python新手,正在尝试做一个非常简单的循环来计算每行前面有多少个相等的值。这里有一个例子

这是我试过的,但似乎做不好

df['count'] = 0       
count = 1

for i in df.index:
    if df['CD'].loc[i] == 'C':
        for j in range(count):
            if j<i:
                if df['CD'].loc[i] == df['CD'].df[i-j]:
                    df['count'].loc[i] = df['count'].loc[i] + 1
                    count = count + 1
                else:
                    count = 1
df['count']=0
计数=1
对于df.index中的i:
如果df['CD'].loc[i]=='C':
对于范围内的j(计数):
如果j试试这个:

counts = []    

for i in df.index:
    count = 0
    while True:
        try:
            if df['CD'].loc[i-count] == C:
                count += 1
            else:
                break
        except:
            break
    if count == 0:
        counts.append(0)
    else:
        counts.append(count-1)
df["count"] = counts

谢谢你,约翰,这就成功了。当您添加while True时,这意味着当前面的值为“C”时,它将继续循环,对吗?否则它将中断循环并开始下一个索引。我只是没有得到附加部分,它在做什么?它将数字添加到一个列表中,该列表将创建列。谢谢。如果我想用另一种方式来做,我的意思是它计算下面而不是上面的数量呢?只要把
df.index
改成
list(df.index).reverse()
df[“count”]=counts
改成
df[“count”]=counts.reverse
John,我设法用
list(reversed(df.index))进行迭代
列表(反向(计数))
,但它给出的结果与以前相同。当我检查前一行时,是否需要更改循环中的某些内容?我已经尝试将df['CD'].loc[I-count]==“C”:
更改为
if df['CD'].loc[I+count]==“C”:
,但仍然没有成功。