Как использовать pandas set_index, если столбцы не имеют имени и состоят только из «rangeindex»

#python #pandas

#python #pandas

Вопрос:

Я хотел бы сделать столбец [0] (т. Е. Доход от аренды, Управление и т. Д.) Моим индексом: введите описание изображения здесь

После индексации следует удалить вертикальный столбец с левой стороны, который должен выглядеть так: введите описание изображения здесь

Я мог бы сделать это вручную, просто скопировав столбец [0] в качестве его индекса и удалив впоследствии столбец [0]:

 income_df.index = income_df[0]
income_df.index.name = 'Category'
income_df = income_df.drop(0, axis = 1)
  

Но строки 1 и 3 кажутся мне избыточными.

Обычно, ЕСЛИ заголовки не RangeIndex(start=0, stop=5, step=1) были, а состояли из имен (например: Категория, Q1, Q2, Q3, Q4), я бы просто использовал:

 df.set_index('Category')
  

Могу ли я использовать set_index для выполнения индексации столбца без строк имен?
Если да, то как?

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

1. df.set_index([0]).rename_index(index='Category') ?

Ответ №1:

Столбцы по-прежнему имеют «метки» как таковые, они просто оказываются [0, 1, 2, 3,…]. Таким образом, вы все равно можете использовать set_index для установки индекса то же самое, что и для любых других имен столбцов:

 df = pd.DataFrame([["a", 1], ["b", 2], ["c", 3], ["d", 4]])

print(df.columns)
print(df)

RangeIndex(start=0, stop=2, step=1)
   0  1
0  a  1
1  b  2
2  c  3
3  d  4
  

установка индекса:

 new_df = df.set_index(0)

print(new_df)
   1
0   
a  1
b  2
c  3
d  4
  

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

1. Вы правы. Спасибо за ваш подробный ответ. Прости меня за то, что я даже спрашиваю…