Это столбец индекса, передать, index=False
чтобы не записывать его, см. Документы
Пример:
In [37]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
pd.read_csv(io.StringIO(df.to_csv()))
Out[37]:
Unnamed: 0 a b c
0 0 0.109066 -1.112704 -0.545209
1 1 0.447114 1.525341 0.317252
2 2 0.507495 0.137863 0.886283
3 3 1.452867 1.888363 1.168101
4 4 0.901371 -0.704805 0.088335
сравнить с:
In [38]:
pd.read_csv(io.StringIO(df.to_csv(index=False)))
Out[38]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
Вы также можете при желании сказать, read_csv
что первый столбец является столбцом индекса, передавая index_col=0
:
In [40]:
pd.read_csv(io.StringIO(df.to_csv()), index_col=0)
Out[40]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
skipcols
аргумента дляread_csv
, после чтения в CSV вы можете просто сделать,df = df.drop(columns=df.columns[0])
или вы можете просто прочитать столбцы вначале, а затем передать столбцы минус первый столбец как-то вроде,cols = pd.read_csv( ....., nrows=1).columns
а затем перечитать снова,df = pd.read_csv(....., usecols=cols[1:])
что позволяет избежать накладных расходов на чтение лишняя колонна, а затем отбрасывая ееЭта проблема, скорее всего, проявляется потому, что ваш CSV был сохранен вместе с его
RangeIndex
(который обычно не имеет имени). Исправление на самом деле должно быть сделано при сохранении DataFrame, но это не всегда вариант.Как избежать проблемы:
read_csv
сindex_col
аргументомИМО, самое простое решение было бы прочитать безымянный столбец в качестве индекса . Укажите
index_col=[0]
аргументpd.read_csv
, который читается в первом столбце как индекс.Решение проблемы с задержкой: фильтрация с
str.match
Если вы не можете изменить код для чтения / записи в файл CSV, вы можете просто удалить столбец путем фильтрации с
str.match
:источник
index_col=[0]
исправление легко решило эту досадную проблему «без имени: 0» и избавило код от многословного изобретения колеса.df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
В другом случае это может произойти, если ваши данные были неправильно записаны,
csv
чтобы каждая строка заканчивалась запятой. Это оставит вас с безымянным столбцомUnnamed: x
в конце ваших данных, когда вы попытаетесь прочитать их вdf
.источник
usecols=range(0,10)
обрезал безымянную колонкуЧтобы получить доступ ко всем столбцам Безымянный, вы также можете использовать регулярные выражения, такие как
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
источник
Просто удалите этот столбец, используя:
del df['column_name']
источник