2016-02-24 61 views
3

我有一個CSV文件:通過熊貓串指數迭代把它們變成浮動

SID done good_ecg good_gsr good_resp comment 
    436  0 1 1 
    2411  1 1 1 
    3858  0 1 1 
    4517  0 1 1 117 min diff between files 
    9458  1 0 1 ######### error in my script 
    9754  0 1 1 trigger fehler 

     #REF!    
     88.8888888889 

這是我在一個大熊貓數據幀將其加載這樣的:

df = pandas.read_csv(f ,delimiter="\t", dtype="str", index_col='SID') 

我想通過指數迭代並打印每一個。但是,當我嘗試

for subj in df.index: 
    print subj 

我得到

436.0 
2411.0 
... 

現在有在每個號碼的末尾這個」 0.0' 。我究竟做錯了什麼?

我也嘗試迭代iterrows()並有同樣的問題。

謝謝你的幫助!

編輯:這裏是整個代碼我使用:

import pandas 
def write(): 
    df = pandas.read_csv("overview.csv" ,delimiter="\t", dtype="str", index_col='SID') 

    for subj in df.index: 
      print subj 


write() 
+0

我似乎無法重現您的問題,您可以在網上發佈您的數據文件嗎? –

回答

1

啊。該dtype參數不適用於index_col

>>> !cat sindex.csv 
a,b,c 
123,50,R 
234,51,R 
>>> df = pd.read_csv("sindex.csv", dtype="str", index_col="a") 
>>> df 
     b c 
a   
123 50 R 
234 51 R 
>>> df.index 
Int64Index([123, 234], dtype='int64', name='a') 

相反,在讀它沒有index_col(None實際上是默認的,所以你不需要index_col=None可言,但在這裏我會明確),然後設置索引:

>>> df = pd.read_csv("sindex.csv", dtype="str", index_col=None) 
>>> df = df.set_index("a") 
>>> df 
     b c 
a   
123 50 R 
234 51 R 
>>> df.index 
Index(['123', '234'], dtype='object', name='a') 

(我想不出在何種情況下df.index將有D類對象,但是當你遍歷它,你會得到整數的情況下,但你實際上並沒有表現出任何產生該問題的獨立代碼。)

+0

嗨@DSM,謝謝你的幫助。我編輯了我的問題,以包含重現問題的代碼,但我認爲你的速度更快了:-) – Sininho

+0

並且您的解決方案能夠正常工作,謝謝! – Sininho