#python #pandas #data-science
#python #pandas #наука о данных
Вопрос:
Я создаю функцию, которая возвращает ‘id’ для ввода названия продукта.
id
pName
ZYMOFLAM D TAB 10s 1
ZYROP INJ 10000IU 2
ZYROP INJ 4000IU 3
ZYTANIX TAB 5MG 10s 4
ZYTEE RB GEL 10ML 5
df.loc['ZYTANIX TAB 5MG 10s']
ВОЗВРАТ
id 4
Name: ZYTANIX TAB 5MG 10s, dtype: int64
но df.loc['ZYTEE RB GEL 10ML']
возвращает KeyError
Почему это происходит?
Комментарии:
1. Проверьте,
print (df.index.tolist())
можетtraling whitespace
, тогда нужноdf.index = df.index.str.strip()
2. ([‘ZYMOFLAM D TAB 10s’, ‘ZYROP INJ 10000IU’, ‘ZYROP INJ 4000IU’, ‘ZYTANIX TAB 5 МГ 10s’, ‘ZYTEE RB GEL 10ML’]) нет завершающего пробела.
3. тогда понятия не имею. Это должно работать нормально.
4. @jezrael спасибо за попытку помочь. Возможны ли неузнаваемые пробелы между словами в названии элемента?
5. если использовать df.index = df.index.str.strip(), это поможет?
Ответ №1:
Я думаю, вам следует сначала выполнить очистку и воссоздать свой фрейм данных, прежде чем применять какой-либо метод нарезки. Чтобы удалить пробелы в конце или дополнительные пробелы между словами, вы можете сделать:
df = df.reset_index()
df['pName'] = df.pName.apply(lambda x: ' '.join(x.strip().split(' ')))
df = df.set_index('pName')
теперь попробуйте
df.loc['ZYTEE RB GEL 10ML']
Комментарии:
1. Эта функция apply преобразует все метки в NAN
2. Прямо сейчас я работаю над заменой всех пробелов между ними. (df[‘pName’] = df[‘pName’].str.replace(» «,»»»)). Это не выдает ошибку ключа. Но мне все еще нужно найти правильное решение с пробелами.
3. Извините, произошла ошибка. Я обновил код. Надеюсь, теперь это сработает.