#python #pandas #dataframe #csv
я создал датафрейм , в нём 3 колнки. Перегоняю его в файл. Читаю данные с файла и вижу новый столбец 'Unnamed' . Всё бы ничего , но я не могу его удалить , вылетает ошибка: ValueError: labels ['Unnamed'] not contained in axis откуда вообще он взялся и что с ним делать ?
Ответы
Ответ 1
Скорее всего вы сохранили 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