Я работаю со столбцом данных, который называется «компании» (вы можете увидеть, как он выглядит ниже). Я хотел бы использовать этот столбец для создания другого столбца под названием «вхождения». Моя цель - заполнить столбец вхождений последовательно, исходя из того, сколько раз встречается название компании. Я хочу, чтобы это выглядело так:
company | occurrences
company 1 | 1
company 1 | 2
company 1 | 3
company 2 | 1
company 2 | 2
company 3 | 1
company 4 | 1
company 4 | 2
company 5 | 1
company 5 | 2
company 5 | 3
company 5 | 4
К сожалению, у меня немало проблем с этим. Это моя попытка начать это, но, во-первых, это создание бесконечного цикла while, из которого я не могу понять, как выйти из него, и, во-вторых, даже если это сработает, это приведет к неправильному заполнению значений. Наряду с этим, оператор if, вложенный в оператор while, возвращает весь столбец вместо окончательного числа компаний.
def occurrences(companies):
occurrences = []
for i in range(len(companies)):
x = 0
occurrences.append(x)
while str(companies[i]) == str(companies[i+1]):
x = x+1
occurrences.append(x)
if str(companies[i]) is not str(companies[i+1]):
x = companies.str.count(companies[i])
occurrences.append(x)
return round_number
occurrences(companies)
Я знаю строку «для i в диапазоне (len (companies))» »перебираем столбец, и я знаю, что "str (companies [i]) == str (companies [i + 1])" действительно правильно сравнивает названия компаний. Я верю, что все остальное совершенно неправильно, хотя. Любой совет будет высоко ценится.