Различные read_csv index_col = None/0/False в pandas

Я использовал следующую команду read_csv:

    In [20]:
    dataframe = pd.read_csv('D:/UserInterest/output/ENFP_0719/Bookmark.csv', index_col=None)
    dataframe.head()
    Out[20]:
    Unnamed: 0  timestamp   url visits
    0   0   1.404028e+09    http://m.blog.naver.com/PostView.nhn?blogId=mi...   2
    1   1   1.404028e+09    http://m.facebook.com/l.php?u=http%3A%2F%2Fblo...   1
    2   2   1.404028e+09    market://details?id=com.kakao.story 1
    3   3   1.404028e+09    https://story-api.kakao.com/upgrade/install 4
    4   4   1.403889e+09    http://m.cafe.daum.net/WorldcupLove/Knj/173424...   1

Результат показывает столбец Unnamed:0, и он является simillar, когда я использовал index_col=False, но когда я использовал index_col=0, результат следующий ниже:

dataframe = pd.read_csv('D:/UserInterest/output/ENFP_0719/Bookmark.csv', index_col=0)
dataframe.head()
Out[21]:
timestamp   url visits
0   1.404028e+09    http://m.blog.naver.com/PostView.nhn?blogId=mi...   2
1   1.404028e+09    http://m.facebook.com/l.php?u=http%3A%2F%2Fblo...   1
2   1.404028e+09    market://details?id=com.kakao.story 1
3   1.404028e+09    https://story-api.kakao.com/upgrade/install 4
4   1.403889e+09    http://m.cafe.daum.net/WorldcupLove/Knj/173424...   1

Результат показал столбец Unnamed:0. Здесь я хочу спросить, в чем разница между index_col=None, index_col=0 и index_col=False, я прочитал документацию в this, но я до сих пор не понял.

Ответ 1

ОБНОВИТЬ

Я думаю, что начиная с версии 0.16.1, теперь возникнет ошибка, если вы попытаетесь передать True для index_col чтобы избежать этой неоднозначности

ОРИГИНАЛ

Многие люди смущаются этим, чтобы указать порядковый индекс вашего столбца, вы должны передать позицию int в этом случае 0.

In [3]:

import io
import pandas as pd
t="""index,a,b
0,hello,pandas"""
pd.read_csv(io.StringIO(t))
​
Out[3]:
   index      a       b
0      0  hello  pandas

Значением по умолчанию является index_col=None как показано выше.

Если мы устанавливаем index_col=0 мы явно заявляем, что первый столбец следует рассматривать как индекс:

In [4]:

pd.read_csv(io.StringIO(t), index_col=0)
Out[4]:
           a       b
index               
0      hello  pandas

Если мы передадим index_col=False мы получим тот же результат, что и None:

In [5]:

pd.read_csv(io.StringIO(t), index_col=False)
Out[5]:
   index      a       b
0      0  hello  pandas

Если мы теперь index_col=None мы получим то же поведение, что и когда мы не передали этот параметр:

In [6]:

pd.read_csv(io.StringIO(t), index_col=None)
Out[6]:
   index      a       b
0      0  hello  pandas

Существует ошибка, при которой, если вы передадите True это было ошибочно преобразовано в index_col=1 поскольку True было преобразовано в 1:

In [6]:

pd.read_csv(io.StringIO(t), index_col=True)
Out[6]:
       index       b
a               
0      hello  pandas

РЕДАКТИРОВАТЬ

Для случая, когда у вас есть пустой столбец индекса, который у вас есть:

In [7]:

import io
import pandas as pd
t=""",a,b
0,hello,pandas"""
pd.read_csv(io.StringIO(t))
​
Out[7]:
   Unnamed: 0      a       b
0           0  hello  pandas
In [8]:

pd.read_csv(io.StringIO(t), index_col=0)
Out[8]:
       a       b
0  hello  pandas
In [9]:

pd.read_csv(io.StringIO(t), index_col=False)
Out[9]:
   Unnamed: 0      a       b
0           0  hello  pandas
In [10]:

pd.read_csv(io.StringIO(t), index_col=None)
Out[10]:
   Unnamed: 0      a       b
0           0  hello  pandas