2017-03-09 193 views
1

我有一个具有1461个属性的csv文件。我想将它加载到熊猫数据框中。问题是,许多行没有跟踪连续列的值。所以熊猫由于长度不规则而给出解析错误。如何将一列的缺失值加载一次并将csv文件加载到数据框中?数据科学熊猫CSV

EDIT1 我们可以看到,数据集CSV文件如下

a,b,c,d,e,f,g,h,i""" 1,2,4,5 1,0,9,8,7,6,5,4,7 1,3,5,6,7 6,7,8,8,9,4,5,3,5""" 我要像下面

"""a b c d e f g h i 
    1 2 4 5 ? ? ? ? ? 
    1 0 9 8 7 6 5 4 7 
    1 3 5 6 7 ? ? ? ? 
    6 7 8 8 9 4 5 3 5""" 

楠大熊猫数据帧的地方?可以ok

我们没有足够的逗号不等长问题。

+0

你能告诉我们的错误跟踪? –

+0

这听起来像你需要预先处理大熊猫以外的文件。 – Khris

+0

你可以给一些文件样本 - 10行不规则长度?还有分隔符丢失? – jezrael

回答

1

看来你可以通过range使用参数namesread_csv列名(如果属性是列):

import pandas as pd 
from pandas.compat import StringIO 

temp=u""" 
a,v 
c,v,f,r 
b,g 
y""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
#in real data change 4 to 1461 
names = range(4) 
df = pd.read_csv(StringIO(temp), names=names) 
print (df) 
    0 1 2 3 
0 a v NaN NaN 
1 c v f r 
2 b g NaN NaN 
3 y NaN NaN NaN 

编辑:

temp=u"""a,b,c,d,e,f,g,h,i 
1,2,4,5 
1,0,9,8,7,6,5,4,7 
1,3,5,6,7 
6,7,8,8,9,4,5,3,5""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp)) 
print (df) 
    a b c d e f g h i 
0 1 2 4 5 NaN NaN NaN NaN NaN 
1 1 0 9 8 7.0 6.0 5.0 4.0 7.0 
2 1 3 5 6 7.0 NaN NaN NaN NaN 
3 6 7 8 8 9.0 4.0 5.0 3.0 5.0 
+0

据我了解他的问题,他是在谈论领先的空列,而不是尾随列。我认为对于领先者来说,他需要正常读取文件,对分隔符进行计数,然后在每行的开头添加适当数量的分隔符。 – Khris

+0

@Khris - 嗯,谢谢你的评论。但似乎有些分隔符丢失,所以值不能匹配正确的列并得到解析错误。但没有数据就很难回答。 – jezrael

+0

错误消失了,但它将所有值视为NaN并且不会导入所有行。和数据是数字我将其转换为数字。对不起,我的意思是跟踪。对不起花车是好的。我想要的只是无法获得NaN号码。你的解决方案是正确的,但似乎是字符串,我们如何才能使它适用于浮动? –