pandas中的read_csv index_col = None/0/False不同

mar*_*ain 14 python csv 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
Run Code Online (Sandbox Code Playgroud)

结果显示列Unnamed:0,当我使用时它是相似的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
Run Code Online (Sandbox Code Playgroud)

结果却显示列Unnamed:0,在这里我要问,是什么区别index_col=None,index_col=0index_col=False,我已阅读的文档这个,但我还是没明白了吧.

EdC*_*ica 16

UPDATE

我认为从版本0.16.1开始,如果你试图传递布尔值True以避免这种歧义,它现在会引发错误

原版的

很多人都对此感到困惑,为了指定列的序数索引,你应该在这种情况下传递int位置index_col,让人困惑的是当没有索引列时,他们传递的0是不正确的,他们应该通过index_col=None.index_col=0将评估index_col=False您观察到的结果.

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
Run Code Online (Sandbox Code Playgroud)

默认值None如上所示.

如果我们设置,index_col=None我们明确声明将第一列视为索引:

In [4]:

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

如果我们通过,True我们得到与上面相同的结果,因为index_col=1评估到True:

In [5]:

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

如果我们现在声明1我们得到了与我们没有通过这个参数时相同的行为:

In [6]:

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

编辑

对于您拥有空白索引列的情况:

In [6]:

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