2015-04-25 15 views
6

że użyto polecenia read_csv następujących poniżejróżne read_csv index_col = brak/0/False pand

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 

Wynik wskazuje kolumna Unnamed:0 i jest zblizonym kiedy stosuje index_col=False, ale gdy stosuje się index_col=0, z wynik jest następujący poniżej:

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 

wynik wykazywały kolumnę Unnamed:0, tu chciałbym zapytać, jaka jest różnica między index_col=None, index_col=0 i index_col=False, Czytałem dokumentację w this, ale wciąż nie wpadłem na ten pomysł.

+0

Myślę, że powodem masz „Unamed: 0' dlatego, że pierwszy csv linia jest następująca: ', datownik, wizyta URL', więc kolumna indeksu jest pusta – EdChum

Odpowiedz

6

UPDATE

myślę od wersji 0.16.1 będzie teraz podnieść błąd, jeśli starają się przekazać wartość logiczną dla index_col aby tego uniknąć niejednoznaczności

ORIGINAL

Wiele osób pomieszane przez to, aby określić indeks porządkowy twojej kolumny, powinieneś podać pozycję int w tym przypadku 0, co dezorientuje ludzi, że gdy istnieje n o kolumna indeksowa, po której przechodzą False, co jest nieprawidłowe, powinny one przekazać None. False oceni na 0, a więc wynik, który zaobserwujesz.

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 

Domyślna wartość to index_col=None, jak pokazano powyżej.

Jeśli ustawimy index_col=0 jesteśmy wyraźnie stwierdzając traktować pierwszą kolumnę jako indeks:

In [4]: 

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

Jeśli mijamy index_col=False możemy uzyskać taki sam efekt jak wyżej z powodu False oceniającego do 0:

In [5]: 

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

Jeśli teraz stwierdzić index_col=None mamy takie samo zachowanie jak kiedy nie zdać ten param:

In [6]: 

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

EDIT

Dla przypadku, gdy masz pustą kolumnę indeksu, który jest to, co masz:

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