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

时间:2015-04-25 08:29:41

标签: 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

结果显示列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

结果确实显示了专栏Unnamed:0,在这里我想问一下,index_col=Noneindex_col=0index_col=False之间有什么区别,我读过this中的文档,但我仍然没有理解。

1 个答案:

答案 0 :(得分:11)

<强>更新

我认为自版本0.16.1以来,如果您尝试为index_col传递布尔值以避免这种歧义,它现在会引发错误

<强> ORIGINAL

很多人对此感到困惑,为了指定列的序数索引,你应该在这种情况下传递int位置0,让人感到困惑的是,当没有索引列传递时False {{ 1}}这是不正确的,他们应该通过NoneFalse将评估为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,由于False评估为0,我们会得到与上述相同的结果:

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

修改

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

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