#python #python-3.x #pandas
Вопрос:
Я пытаюсь изменить свой фрейм данных, в котором я хочу Person
, чтобы индекс был, однако как мне сделать так, чтобы индекс был уникальным? Я не знаю, нужны ли дубликаты в моем индексе.
df = pd.DataFrame({'Person':['Paul','Paul','Paul','John','John','Mia'],'Score':[24,23,54,64,89,56],'Type':['A','C','F','A','G','X'],'Number':[1,2,3,1,2,1]})
df.set_index('Person',inplace = True)
Желаемый результат:
Комментарии:
1. Можете ли вы подробнее рассказать о том, как вы хотите обрабатывать повторяющиеся значения. Вы хотите создать список значений, среднее значение, выбрать одно и т. Д.?
2. Сделать а
reset_index()
доset_index()
и потомset_index(['Person', 'index'])
?3. Я просто хочу вставить столбец
Person
в индекс, но когда я его устанавливаю, появляются дубликаты, я просто хочу, чтобы для этой группы было 1 значение индекса. Я показал это на картинке выше.4. Да, но у вас есть 3 балла для Пола, как эти баллы должны быть объединены? Или им следует держаться порознь?
5. Если
Number
уникален под каждым человеком, то сделайте мультииндекс наPerson
иNumber
?
Ответ №1:
Если вы просто хотите удалить повторяющиеся значения из индекса, используйте:
df = df.set_index('Person')
df.index = np.where(df.index.duplicated(), '', df.index)
Ответ №2:
Вы можете создать a MultiIndex
, сохранив предыдущий числовой индекс в качестве второго уровня:
df.set_index(['Person', df.index], inplace=True)
df
Score Type Number
Person
Paul 0 24 A 1
1 23 C 2
2 54 F 3
John 3 64 A 1
4 89 G 2
Mia 5 56 X 1
Я думаю, что это самое близкое, что вы можете получить к желаемому результату, потому что по определению для каждой строки фрейма данных должно быть значение индекса.