я создал датафрейм , в нём 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
Комментариев нет:
Отправить комментарий