Рассмотрим следующую строку:
ab
Образец (ab.*)
вернет совпадение для группы захвата с результатом ab
Пока шаблон (ab.+)
не будет соответствовать и ничего не возвращать.
Но если вы измените строку на следующую, она вернет aba
для шаблона (ab.+)
aba
Это индексный столбец, передать index=False
, чтобы не записывать его, см. docs
Пример:
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
Другим случаем, когда это может произойти, является то, что ваши данные были неправильно записаны в ваш csv
, чтобы каждая строка заканчивалась запятой. Это приведет к тому, что вы останетесь с неузнанным столбцом Unnamed: x
в конце ваших данных, когда вы попытаетесь прочитать его в df
.
skipcols
arg дляread_csv
, после чтения в csv вы могли бы просто сделатьdf = df.drop(columns=df.columns[0])
, или вы могли бы просто сначала прочитать столбцы, а затем передать столбцы минус первый столбец, что-то вродеcols = pd.read_csv( ....., nrows=1).columns
и затем снова перечитыватьdf = pd.read_csv(....., usecols=cols[1:])
, это позволяет избежать накладных расходов на чтение избыточного столбца, а затем затем отбрасывать его – EdChum 24 March 2018 в 17:39