Фрейм данных.loc по неуникальному индексу

#python #pandas

Вопрос:

У меня есть a dataframe с неуникальным индексом. Я хочу использовать .loc на dataframe А.

 data = [['tom', 10], ['nick', 15], ['juli', 14], ['tom', 12], ['tom', 64]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df.set_index('Name', inplace = True)
 

Когда я пытаюсь

 df.loc['tom': 'Age']
 

Ошибка ключа: «Не удается привязать левый срез к неуникальной метке: «том»»

Это почему? Могу ли я работать только .loc dataframes с уникальными индексами?

Комментарии:

1. @9769953 Я соответствующим образом отредактировал свой вопрос

2. Вы использовали : вместо , в loc попытку df.loc['tom', 'Age'] , потому что «Возраст» — это столбец

3. Комментируя Бена. Комментарий T: вы намерены выбрать диапазон индексов (в этом случае ваша выборка не имеет смысла, поскольку » том «выбирает одну или несколько строк, а «Возраст» выбирает столбец), или вы намерены выбрать несколько строк для определенного столбца? В последнем случае, действительно, используйте запятую.

Ответ №1:

Ваша реализация неверна. Age не является элементом Name индекса, и, кроме того, если вы хотите срезать между строками, то строки должны быть уникальными. Предположим, вы не можете применить .loc[] к Name индексу, например 'tom':'nick' , потому Name что они не уникальны.

Проверьте pandas.loc[] для получения более подробной информации.

Вы могли бы сделать что-то вроде этого:

 import pandas as pd


data = [['tom', 10], ['nick', 15], ['juli', 14], ['tom', 12], ['tom', 64]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df.set_index('Name', inplace = True)
df = df.loc['tom', 'Age']

print(df)
 

Выход:

 Name
tom    10
tom    12
tom    64
Name: Age, dtype: int64