Ошибка: «ни один из [[x, y, z]] не находится в [index]» - PullRequest
0 голосов
/ 12 июня 2019

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

Я очень новичок в аналитике pandas / python, поэтому, если вы можете сразу увидеть ответ, не могли бы вы рассказать, как вы его нашли? Я хочу учиться. Спасибо!

все работает, когда я закомментирую последнюю строку, которую я показал здесь ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')

ss=pd.read_csv('cars_cars_saved_search_data.csv',parse_dates=[0])
ss_eventtotals=ss
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|open|srp','saved search|open|nav',
                                              'save search|create start']),'Bucket'] = 'create start' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|create|srp','saved search|create|nav',
                                              'save search|create success']),'Bucket'] = 'create complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['save search|create cancel']),'Bucket'] = 'create cancel - Web' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete']),'Bucket'] = 'delete start' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete cancel']),'Bucket'] = 'delete cancel'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete success',
                                              'save search|delete success']),'Bucket'] = 'delete complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit','save search|edit start']),'Bucket'] = 'edit start'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit cancel',
                                              'save search|edit cancel']),'Bucket'] = 'edit cancel'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit save',
                                              'save search|edit success']),'Bucket'] = 'edit complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|view']),'Bucket'] = 'view - App' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['save search|add cancel']),'Bucket'] = 'add cancel - Web' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|run search']),'Bucket'] = 'run search - App' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|view']),'Bucket'] = 'search view - App' 
ss_eventtotals2=ss_eventtotals.groupby('Bucket')
ss_eventtotals2=ss_eventtotals2.sum()
ss_eventtotals_plot=ss_eventtotals2.loc[ss_eventtotals2.index.isin(['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App'])]
bucket_order = ['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App']
ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')

Я ожидал, что «ведра» будут нанесены в порядке их перечисления

Опять же, я новичок, и я знаю, что это просто пробел в знаниях, который у меня есть, любая помощь очень ценится.

Дайте мне знать, если мне нужно опубликовать больше моего кода.

1 Ответ

0 голосов
/ 12 июня 2019

Скорее всего, опечатка где-то портит ваши индексные ключи, или вы теряете их во время операций groupby (). Sum ().

Попробуйте:

missing_keys = [key for key in bucket_order if key not in ss_eventtotals_plot.index]
missing_keys

Чтобы выяснить, какие ключи отсутствуют.

В общем случае вам нужно использовать функцию Pandas 'reindex', чтобы изменить порядок индекса, он создаст новыйиндексы для отсутствующих ключей и заполните их 'NaN'.Таким образом, последний абзац будет выглядеть так:

bucket_order = ['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App']
ss_eventtotals_plot=ss_eventtotals2.reindex([bucket_order])
ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')
...