2015-04-25 20 views
6

tôi đã sử dụng lệnh read_csv sau dưới đây:index_col read_csv khác nhau = None/0/False trong gấu trúc

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 

Kết quả cho thấy cột Unnamed:0 và nó là simillar khi tôi sử dụng index_col=False, nhưng khi tôi sử dụng index_col=0, các kết quả là sau dưới đây:

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 

kết quả đã cho thấy cột Unnamed:0, Tại đây tôi muốn hỏi, sự khác biệt giữa index_col=None, index_col=0, và 01.230.948 là gì, tôi đã đọc tài liệu trong this, nhưng tôi vẫn không hiểu ý tưởng.

+0

Tôi nghĩ lý do bạn bị lỗi 'Unamed: 0' là bởi vì bạn csv đầu tiên dòng giống như sau: ', dấu thời gian, lượt truy cập url' để cột chỉ mục trống – EdChum

Trả lời

6

CẬP NHẬT

Tôi nghĩ rằng kể từ phiên bản 0.16.1 bây giờ nó sẽ nâng cao một lỗi nếu bạn cố gắng để vượt qua một boolean cho index_col để tránh sự nhập nhằng này

ORIGINAL

Rất nhiều người bị lẫn lộn bởi điều này, để xác định chỉ số thứ tự của cột của bạn, bạn nên vượt qua vị trí int trong trường hợp này 0, điều gây nhầm lẫn cho mọi người là khi có n o cột chỉ mục mà họ vượt qua False mà không chính xác họ phải vượt qua None. False sẽ đánh giá thành 0 do đó bạn nhận được kết quả.

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 

Giá trị mặc định là index_col=None như được hiển thị ở trên.

Nếu chúng ta thiết lập index_col=0 chúng ta một cách rõ ràng nêu để điều trị cột đầu tiên là chỉ số:

In [4]: 

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

Nếu chúng ta vượt qua index_col=False chúng tôi nhận được kết quả tương tự như trên do False đánh giá để 0:

In [5]: 

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

Nếu bây giờ chúng tôi nêu rõ index_col=None, chúng tôi sẽ nhận được cùng một hành vi như khi chúng tôi không vượt qua thông số này:

In [6]: 

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

EDIT

Đối với trường hợp bạn có một cột index trống đó là những gì bạn có:

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 
Các vấn đề liên quan