读取int混合float / int类型列的元素作为nans的pandas

时间:2018-05-12 18:58:16

标签: python pandas dataframe

最初由于csv末尾有额外的逗号,我的数据出现问题,但是我使用了一个脚本来删除它们。现在我有标题问题。这是问题从我的一个数据集开始的地方。我举例说明了一个数据集的一部分。

3474,6951,2011-10-22,4,0,10,5,0,6,0,1,0.38,0.3939,0.66,0.0,1,7,361.0  
3475,6952,2011-10-22,4,0,10,6,0,6,0,1,0.36,0.3788,0.71,0.0,1,17,383.0  
 3476,6953,2011-10-22,4,0,10,7,0,6,0,1,0.36,0.3636,0.76,0.1045,8,49  
3477,6954,2011-10-22,4,0,10,8,0,6,0,1,0.4,0.4091,0.71,0.0,26,88  

最后一列应该是我的回归目标列。当pandas读取整个数据帧时,它会将索引1到3475中该列的元素完美地解释为浮点数。例如。 df [目标] [3475] = 383.0。但是,对于i,df [target] [i]> 3475被列为nan。

我试过强制列为float类型,但没有取得任何成功。 我还应该注意到我有其他数据集存在同样的问题。其中之一是所有目标元素都是整数。在这种情况下,pandas将所有目标元素解释为nan。

我用来加载这些数据的代码是:

df_train = pd.read_csv(dataset+str("_train")+str(fold)+".csv"). 

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,您的cvs文件中的字段数不一致。

使用此命令,索引从1开始 cat int_float.csv |cut -d"," -f16,17,18

1,7,361.0 
1,17,383.0  
8,49
26,88

pd.read_csv

一致
       14  15  16       17  
0     0.0   1   7   361.0   
1     0.0   1  17  383.0    
2  0.1045   8  49      NaN  
3     0.0  26  88      NaN