Удаление индексного столбца в pandas
У меня есть следующий код, который импортирует CSV файл. Есть 3 столбца, и я хочу установить первые два из них в переменные. Когда я устанавливаю второй столбец в переменную "эффективность", также включается столбец индекса. Как я могу избавиться от столбца индекса?
df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False)
energy = df.index
efficiency = df.Efficiency
print efficiency
Я попытался использовать
del df['index']
после того, как я установил
energy = df.index
который я нашел в другом сообщении, но это приводит к "KeyError: 'index'"
Ответы
Ответ 1
В DataFrames и Series всегда есть индекс. Хотя он отображается рядом с столбцом (столбцами), это не столбец, поэтому del df['index']
не работает.
Если вы хотите заменить индекс на простые порядковые номера, используйте df.reset_index()
. Я настоятельно рекомендую немного прочитать документацию pandas, например, 10 минут для Pandas, чтобы понять, почему индекс есть, как он используется.
Ответ 2
При чтении в файл CSV и из него можно указать аргумент index=False
например:
df.to_csv(filename, index=False)
и читать из csv
df.read_csv(filename, index=False)
Это должно предотвратить проблему, поэтому вам не нужно ее исправлять позже.
Ответ 3
df.reset_index(drop=True, inplace=True)
Ответ 4
Вы можете установить один из столбцов в качестве индекса, если он является "id", например.
В этом случае столбец индекса будет заменен одним из выбранных вами столбцов.
df.set_index('id', inplace=True)
Ответ 5
Если ваша проблема такая же, как у меня, где вы просто хотите reset заголовки столбцов от 0 до размера столбца. У
df = pd.DataFrame(df.values);
EDIT:
Не очень хорошая идея, если у вас гетерогенные типы данных. Лучше всего используйте
df.columns = range(len(df.columns))
Ответ 6
вы можете указать, какой столбец является индексом в вашем файле csv, используя параметр index_col из функции from_csv
если это не решит проблему, укажите пример своих данных.
Ответ 7
Одна вещь, которую я делаю, это df=df.reset_index()
тогда df=df.drop(['index'],axis=1)