我正在做一个计数器列,它只在(I-1)的值与I的值不同时增加
以下是数据示例:
user_id sc_id
1 100
1 100
1 101
1 100
2 100
2 105
3 105
3 105
下面是我的代码:
df['subcat_counter'] = 1
for i in range(1,len(df)):
if df.sc_id[i-1]==df.sc_id[i] and df['user_id'][i-1]==df['user_id'][i]:
df.at[i,'subcat_counter']=df.subcat_counter[i-1]
else:
df.at[i,'subcat_counter']=df.subcat_counter[i-1]+1
以下是所需的输出:
user_id sc_id subcat_counter
1 100 1
1 100 1
1 101 2
1 . 100 3
2 100 4
2 105 5
3 105 6
3 105 6
错误:
KeyError: 0
如果您关心的只是前一行,那么可以使用
.shift()
获取其值,然后进行相应的比较。在这里,我们检查user_id
和sc_id
是否与前一行匹配,并对其求反,以找到希望值更改的点。然后我们将它转换成int
,使真值为1,假值为0(这不是严格必要的,但有助于解释发生了什么),然后进行累积求和。你知道吗使用^{} :
另一种解决方案:
相关问题 更多 >
编程相关推荐