2017-01-13 64 views
1

有不均匀的长度熊猫read_csv与行长短不齐的头

LS-DYNA user input              
         ls-dyna mpp.78769 s    date 01/02/2013 

constraint #  axial  shear   time failure          length rslt moment  torsion 
     1720 8.39282E-01 6.55466E-01 1.20000E+03  0.0 spotweld beam ID  938970 4.47325E+01 2.24041E+00 
     1721 3.30134E-01 5.08016E-01 1.20000E+03  0.0 spotweld beam ID  938971 4.47310E+01 1.70857E+00 
     1722 9.52039E-01 2.24977E+00 1.20000E+03  0.0 spotweld beam ID  938972 3.50040E+00 1.14531E+01 
     1723 1.37947E+00 3.75614E+00 1.20000E+03  0.0 spotweld beam ID  938973 2.99986E+00 3.72429E+01 
     1724 -1.29900E+00 8.59783E-01 1.20000E+03  0.0 spotweld beam ID  938974 3.50112E+00 1.11357E+01 
     1725 -1.39978E+00 5.05035E+00 1.20000E+03  0.0 spotweld beam ID  938975 2.99934E+00 1.69379E+01 
     1726 -8.28811E-01 2.36767E+00 1.20000E+03  0.0 spotweld beam ID  938976 3.50022E+00 1.01569E+01 
     1727 -8.02390E-01 2.83158E+00 1.20000E+03  0.0 spotweld beam ID  938977 2.99945E+00 5.26153E+01 
     1728 2.45994E+01 2.55278E+02 1.20000E+03  0.0 spotweld beam ID  938978 3.51565E+00 1.03888E+01 
     1729 3.79365E+01 1.91420E+01 1.20000E+03  0.0 spotweld beam ID  938978 2.99987E+00 8.96939E+00 

一个txt文件,而无需诉诸skiprows,因为没有数据在不同的情况下,将改变行,我试图读取该文件通过

pd.read_csv(File, header=None, delim_whitespace=True) 

这会让我的错误与

pandas.parser.CParserError: Error tokenizing data. C error: Expected 3 fields in line 2, saw 5 

然后我重新定义了熊猫的参数,因为

my_cols = ['A', 'B', 'C', 'D', 'E','F','G'] 
elout= pd.read_csv(File, names=my_cols, header=None, delim_whitespace=True) 

不会有问题。除了这种愚蠢的方式,有没有其他设置可以解决这个问题?

谢谢!

回答

0

如果您不想使用skiprows,另一种方法是自己打开文件,如f = open(File)。然后你f.readline()并手动解析你不感兴趣的第一行。一旦通过f提取标题的有用部分并且文件指针到达表的开头,只需将f作为第一个参数传递给read_csv,熊猫将开始处理来自该点的数据。