Как получить имена всех столбцов с их индексными номерами в таблице фрейма данных pandas?

#python #pandas #dataframe

#питон #панды #фрейм данных

Вопрос:

Я хотел бы удалить некоторые столбцы фрейма данных и обнаружил, что это раздражает, вводя все имена столбцов. Я хотел бы использовать индексные номера столбцов вместо столбцов, чтобы удалить столбцы из фрейма данных. В следующем коде указаны все имена заголовков, но как также получить индексные номера?

 import pandas as pd df=pd.read_csv("https://raw.githubusercontent.com/codebasics/py/master/ML/14_naive_bayes/titanic.csv") print(df.columns)  

Ожидаемый Результат:

 'PassengerId', 0  'Name', 1  'Pclass', 2  'Sex', 3  'Age', 4  'SibSp', 5  'Parch', 6  'Ticket', 7  'Fare', 8  'Cabin', 9  'Embarked', 10  'Survived', 11  

Ответ №1:

Использовать pd.Series с именами столбцов:

 s = pd.Series(df.columns) print (s) 0 PassengerId 1 Name 2 Pclass 3 Sex 4 Age 5 SibSp 6 Parch 7 Ticket 8 Fare 9 Cabin 10 Embarked 11 Survived dtype: object  

Как уже упоминалось @timgeb (спасибо), можно выбирать по позициям, а не по именам столбцов:

 df['Name'] df.iloc[:, 1]  

При необходимости удалите первые 2 столбца, используйте:

 df = df.iloc[:, 2:]  

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

1. @jezrael Мне нужно, чтобы заголовок был таким, какой он есть. Просто мне нужно сгенерировать таблицу с индексными номерами, чтобы я мог удалить первые два столбца следующим кодом df.drop(df.columns[[0, 1]], axis = 1) . Поэтому мне нужны индексные номера столбцов.

Ответ №2:

Для печати как номера индекса, так и имени столбца можно использовать enumerate :

 gt;gt;gt; list(enumerate(df.columns))  

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

1. Спасибо! Это то, что я ищу.