Страницы

Поиск по вопросам

пятница, 17 мая 2019 г.

почему появляется столбец 'Unnamed'

я создал датафрейм , в нём 3 колнки. Перегоняю его в файл. Читаю данные с файла и вижу новый столбец 'Unnamed' . Всё бы ничего , но я не могу его удалить , вылетает ошибка:
ValueError: labels ['Unnamed'] not contained in axis
откуда вообще он взялся и что с ним делать ?


Ответ

Скорее всего вы сохранили CSV файл с индексом (по умполчанию).
Как это проверить:
In [31]: df.columns.tolist() Out[31]: ['Unnamed: 0', 'a', 'b', 'c']
Пример:
In [16]: df = pd.DataFrame(np.arange(1,10).reshape(3,3), columns=list('abc'))
In [17]: df Out[17]: a b c 0 1 2 3 1 4 5 6 2 7 8 9
In [18]: df.to_csv(r'c:/temp/test.csv')
теперь если просто прочитать его, то получим столбец Unnamed: 0 (т.к. индекс был безымянным):
In [20]: x = pd.read_csv(r'c:/temp/test.csv')
In [21]: x Out[21]: Unnamed: 0 a b c 0 0 1 2 3 1 1 4 5 6 2 2 7 8 9
вот как это выглядит в CSV файле:
In [22]: print(Path(r'c:/temp/test.csv').read_text()) ,a,b,c 0,1,2,3 1,4,5,6 2,7,8,9
Как это обойти:
In [23]: x = pd.read_csv(r'c:/temp/test.csv', index_col=0)
In [24]: x Out[24]: a b c 0 1 2 3 1 4 5 6 2 7 8 9
или сохранять DataFrame без индекса:
In [25]: df.to_csv(r'c:/temp/test.csv', index=False)
In [26]: print(Path(r'c:/temp/test.csv').read_text()) a,b,c 1,2,3 4,5,6 7,8,9
In [27]: pd.read_csv(r'c:/temp/test.csv') Out[27]: a b c 0 1 2 3 1 4 5 6 2 7 8 9

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

Отправить комментарий