2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
您不需要為此使用循環(huán)。您可以使用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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
你有幾個(gè)錯(cuò)誤:
for i in range(len(companies)):
這應(yīng)該是你唯一的循環(huán);它將推動(dòng)您的旅行下降。其他一切都將簡(jiǎn)單地使用i
行索引。
while str(companies[i]) == str(companies[i+1]):
使用if
;您每次迭代只進(jìn)行一次檢查。使其成為while
意味著此whiel
循環(huán)中的某些內(nèi)容必須更改 的值i
或表中的值-否則,條件永遠(yuǎn)不會(huì)改變,并且您將進(jìn)入無限循環(huán)。
if str(companies[i]) is not str(companies[i+1]):
我不明白為什么會(huì)存在這種情況。首先,is not
必須為真,因?yàn)檫@兩個(gè)對(duì)象不可能有相同的參照物:它們是同一序列中的不同位置。如果您在標(biāo)簽不同時(shí)嘗試做某事,則取消縮進(jìn)并將其替換為 simple else
,指的是if
您剛剛從格式不正確的while
.
添加回答
舉報(bào)