#python #arrays #pandas
#python #массивы #pandas
Вопрос:
Я пытаюсь извлечь значение из набора данных CSV, соответствующее индексу (другому атрибуту в наборе данных), но я продолжаю получать error index 0 is out of bounds for axis 0 with size 0
.
Я прочитал набор данных как
dataset = pd.read_csv("df.csv",encoding='latin1',low_memory=False)
и функция, которая должна возвращать заголовок в моем случае,
def get_index_from_title(name):
# print(name)
return dataset[dataset.name == name]["index"].values[0]
имя имеет определенное значение, как показано на скриншоте
здесь
Как я могу получить индекс для имени «HelloWorld», например? Я был бы очень признателен за какую-то помощь.
Код был адаптирован из руководства YouTube здесь: https://youtu.be/XoTwndOgXBM чтобы учиться
Комментарии:
1. Это означает, что фрейм данных не содержит строк с выбранным вами «именем». Следовательно, оно пустое.
2. @SuhasMucherla Привет, в наборе данных есть атрибут с именем, и это значение также доступно, однако
Ответ №1:
Ваш метод верен, если индекс является столбцом в вашем фрейме данных:
index = [0,1,2]
name = ["HelloWorld", "name1", "name2"]
df = pd.DataFrame({'index':index, 'name':name})
df[df.name == "HelloWorld"]["index"].values[0]
В этом случае фрейм данных выглядит следующим образом:
index name
0 0 HelloWorld
1 1 name1
2 2 name2
Но если index — это не имя столбца, а фактический индекс строк, этот метод не будет работать. Вы должны попробовать это:
index = [0,1,2]
name = ["HelloWorld", "name1", "name2"]
df = pd.DataFrame({'index':index, 'name':name})
df.set_index('index', inplace = True)
df[df.name == "HelloWorld"].index[0]
Здесь фрейм данных выглядит следующим образом:
name
index
0 HelloWorld
1 name1
2 name2
Комментарии:
1. Привет, но индекс на самом деле является именем столбца в наборе данных.
2. Прилагаемый снимок экрана прояснит сомнения 🙂
3. Затем, пожалуйста, убедитесь, что имя, которое вы даете своей функции, точно совпадает с именем в данных столбца. get_index_from_title(«HelloWorld»). Также, пожалуйста, проверьте в вашем фрейме данных наличие каких-либо пробелов до или после в тексте HelloWorld, это могло быть » HelloWorld» или «HelloWorld», это не соответствовало бы условию == и тогда возникала бы эта ошибка. Спасибо 🙂