熊猫读取错位列

时间:2014-04-04 19:18:42

标签: python pandas

在下面的数据框中,大多数列的分隔符是空格。但是,在第一列中,空格丢失,导致所有列向右移动一列。有没有办法读取数据框,这样我就不必经常选择左边的一列来到我需要的列。

 RUN   YR    A     B       C        D        E       F 
    11988    8.98  173.90  210.81   19.54    0.69    0.00
    11989    7.00  317.30  280.06    1.82    2.10    0.00
    11990    8.82  237.00  275.55    0.77    1.20    0.00
    11991    8.39  408.90  402.21    0.00    2.50    0.00
    11992    8.48  291.20  285.01    0.00    1.67    0.00
    11993    5.90  437.40  419.76    2.86    3.39    0.00
    11994    7.65  405.30  346.13    5.69    2.96    0.00
    11995    7.06  352.80  383.85    0.07    2.17   16.05
    11996    5.14  377.10  339.10   13.55    2.27    0.00
    11997    6.80  350.20  383.68    7.32    2.82    0.00
    11998    8.21  462.80  358.38    2.85    3.40    0.00
    11999    8.70  322.30  387.90    2.89    2.67   24.64
    12000    8.33  297.40  233.06    0.00    1.75    0.00

1 个答案:

答案 0 :(得分:1)

如果你上面显示的是你的文件,你可以使用read_fwf(阅读固定宽度格式的行的表格)来阅读:

In [116]: s=""" RUN   YR    A     B       C        D        E       F 
     ...:     11988    8.98  173.90  210.81   19.54    0.69    0.00
     ...:     11989    7.00  317.30  280.06    1.82    2.10    0.00
     ...:     11990    8.82  237.00  275.55    0.77    1.20    0.00
     ...:     11991    8.39  408.90  402.21    0.00    2.50    0.00
     ...:     11992    8.48  291.20  285.01    0.00    1.67    0.00
     ...:     11993    5.90  437.40  419.76    2.86    3.39    0.00
     ...:     11994    7.65  405.30  346.13    5.69    2.96    0.00
     ...:     11995    7.06  352.80  383.85    0.07    2.17   16.05
     ...:     11996    5.14  377.10  339.10   13.55    2.27    0.00
     ...:     11997    6.80  350.20  383.68    7.32    2.82    0.00
     ...:     11998    8.21  462.80  358.38    2.85    3.40    0.00
     ...:     11999    8.70  322.30  387.90    2.89    2.67   24.64
     ...:     12000    8.33  297.40  233.06    0.00    1.75    0.00"""

In [117]: pd.read_fwf(StringIO(s))
Out[117]: 
    RUN   YR     A      B       C      D     E      F
0      11988  8.98  173.9  210.81  19.54  0.69   0.00
1      11989  7.00  317.3  280.06   1.82  2.10   0.00
2      11990  8.82  237.0  275.55   0.77  1.20   0.00
3      11991  8.39  408.9  402.21   0.00  2.50   0.00
4      11992  8.48  291.2  285.01   0.00  1.67   0.00
5      11993  5.90  437.4  419.76   2.86  3.39   0.00
6      11994  7.65  405.3  346.13   5.69  2.96   0.00
7      11995  7.06  352.8  383.85   0.07  2.17  16.05
8      11996  5.14  377.1  339.10  13.55  2.27   0.00
9      11997  6.80  350.2  383.68   7.32  2.82   0.00
10     11998  8.21  462.8  358.38   2.85  3.40   0.00
11     11999  8.70  322.3  387.90   2.89  2.67  24.64
12     12000  8.33  297.4  233.06   0.00  1.75   0.00

由于格式错误,名称为'RUN YR'的第一列不正确,而另一列则不正确。