Засада с вложенным циклом

Засел на простейшем вложенном цикле :( У меня есть датасет из задания по Tripadvisor. Там есть рестораны, стили кухни, представленные в них, города и т.п. Сделал pivot_table, в котором видно в каком городе представлено какое количество ресторанов по видам кухни

table = pd.pivot_table(df.explode('Cuisine Style'), values = ['ID_TA'], index = ['City'], columns = ['Cuisine Style'], aggfunc = 'count', fill_value = 0)

Теперь хочу пройтись по датасету вложенным циклом, чтобы для каждого ресторана вычислить сколько еще в городе представлено таких же кухонь, как в этом ресторане. Написал такое:

for i in range(len(df['City'])):
city = df['City'].iloc[i]
rest_count_avg = []
for j in range(len(df['Cuisine Style'].iloc[i])):
    style = df['Cuisine Style'].iloc[i][j]
    n = table.loc[city]['ID_TA'][style]
    rest_count_avg.append(n)
res = np.mean(rest_count_avg)
df['test'].iloc[i]= res

Блокнот выдает ошибку

(TypeError: 'str' object cannot be interpreted as an integer).

Никак не могу понять ГДЕ я пытаюсь выдать строку за число в этом цикле??? Помогите, люди добрые :)


Ответы (1 шт):

Автор решения: CrazyElf

Не совсем понятно, что вы пытаетесь сделать вот здесь:

n = table.loc[city]['ID_TA'][style]

Скорее всего ругается именно на эту строку, поскольку вы пытаетесь индексироваться через строковые переменные city и style. Возможно, вы хотели написать что-то типа:

n = table.loc[table.city == city, 'ID_TA']

Но вот дальше я вообще не понимаю, что вы хотели получить через [style].

Приведите пример ваших данных (или кусок программы, который получает эти данные), чтобы можно было разбираться дальше.

→ Ссылка