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
.
添加回答
舉報