#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