Засада с вложенным циклом
Засел на простейшем вложенном цикле :(
У меня есть датасет из задания по 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 шт):
Не совсем понятно, что вы пытаетесь сделать вот здесь:
n = table.loc[city]['ID_TA'][style]
Скорее всего ругается именно на эту строку, поскольку вы пытаетесь индексироваться через строковые переменные city и style. Возможно, вы хотели написать что-то типа:
n = table.loc[table.city == city, 'ID_TA']
Но вот дальше я вообще не понимаю, что вы хотели получить через [style].
Приведите пример ваших данных (или кусок программы, который получает эти данные), чтобы можно было разбираться дальше.