2016-02-24 29 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