получение значения, соответствующего строке из набора данных csv

#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», это не соответствовало бы условию == и тогда возникала бы эта ошибка. Спасибо 🙂