2015-05-06 102 views
0

編輯:大熊貓讀取ASCII格式的表

我在這裏找到部分答案:

https://stackoverflow.com/a/26551913/2230844

https://stackoverflow.com/a/15026839/2230844


我怎麼能在大熊貓讀取這樣的ASCII格式的表格:

 ---------------------------------------------------- 
     | col1   col2   col3   col4 | 
     ------------ ------------ ------------ ------------- 
1002 0.402397E-01 0.883513E-02 0.450885E-01 0.118748E-02 
1003 0.105235  0.474509E-02 0.118508  0.168397E-03 
1004 0.102625  0.225842E-02 0.317864E-02 0.997383  
    1 0.603750  0.475112E-01 0.679590  0.114713E-02 
    2 0.534171E-01 0.119815E-01 0.600187E-01 0.830949E-04 
    3 0.283291E-01 0.119353E-01 0.317530E-01 0.243996E-04 
    104 0.739759E-02 0.463873E-02 0.827061E-02 0.145207E-05 
    ----------------------------------------------------- 

我注意到使用read_fwf()這個答案,但它需要手動指定列的寬度:

Reading from file a hierarchical ascii table using Pandas

回答

3

假設你的ASCII數據是一個字符串,x

In [1099]: x 
Out[1099]: '  ----------------------------------------------------\n  | col1   col2   col3   col4 |\n  ------------ ------------ ------------ -------------\n 1002 0.402397E-01 0.883513E-02 0.450885E-01 0.118748E-02\n 1003 0.105235  0.474509E-02 0.118508  0.168397E-03\n 1004 0.102625  0.225842E-02 0.317864E-02 0.997383 \n 1 0.603750  0.475112E-01 0.679590  0.114713E-02\n 2 0.534171E-01 0.119815E-01 0.600187E-01 0.830949E-04\n 3 0.283291E-01 0.119353E-01 0.317530E-01 0.243996E-04\n 104 0.739759E-02 0.463873E-02 0.827061E-02 0.145207E-05\n  -----------------------------------------------------' 

一pd.read_csv中可用的幾個選項可以讓您訪問此數據框:

In [1123]: pd.read_csv(StringIO(x), sep=' ', skipfooter=1, skiprows=1, skipinitialspace=True).drop([0]) 
Out[1123]: 
     |   col1   col2   col3  col4 |.1 
1 1002 0.402397E-01 0.883513E-02 0.450885E-01 0.001187 NaN 
2 1003  0.105235 0.474509E-02  0.118508 0.000168 NaN 
3 1004  0.102625 0.225842E-02 0.317864E-02 0.997383 NaN 
4  1  0.603750 0.475112E-01  0.679590 0.001147 NaN 
5  2 0.534171E-01 0.119815E-01 0.600187E-01 0.000083 NaN 
6  3 0.283291E-01 0.119353E-01 0.317530E-01 0.000024 NaN 
7 104 0.739759E-02 0.463873E-02 0.827061E-02 0.000001 NaN 
+0

這看起來hackish和非常易碎取決於ascii表格式 – denfromufa