2 回答
TA贡献1836条经验 获得超13个赞
您不需要为此使用循环。您可以使用groupby+ cumcount:
df['ocurrence']=df.groupby('company').cumcount()+1
print(df)
company ocurrence
0 company 1 1
1 company 1 2
2 company 1 3
3 company 2 1
4 company 2 2
5 company 3 1
6 company 4 1
7 company 4 2
8 company 5 1
9 company 5 2
10 company 5 3
11 company 5 4
TA贡献1818条经验 获得超3个赞
你有几个错误:
for i in range(len(companies)):
这应该是你唯一的循环;它将推动您的旅行下降。其他一切都将简单地使用i
行索引。
while str(companies[i]) == str(companies[i+1]):
使用if
;您每次迭代只进行一次检查。使其成为while
意味着此whiel
循环中的某些内容必须更改 的值i
或表中的值-否则,条件永远不会改变,并且您将进入无限循环。
if str(companies[i]) is not str(companies[i+1]):
我不明白为什么会存在这种情况。首先,is not
必须为真,因为这两个对象不可能有相同的参照物:它们是同一序列中的不同位置。如果您在标签不同时尝试做某事,则取消缩进并将其替换为 simple else
,指的是if
您刚刚从格式不正确的while
.
添加回答
举报