如何在Pandas中处理带有可变空格的数据

时间:2017-11-09 11:00:39

标签: python pandas

我尝试使用pandas.read_csv尝试使用变量空间读取数据。其中一列是一个本身就有空格的名称。在这里给出一个想法,了解数据的头部是什么样的

ACM00078861  17.1170  -61.7830   10.0    COOLIDGE FIELD (UA)            1947 1993  13896
AEM00041217  24.4333   54.6500   16.0    ABU DHABI INTERNATIONAL AIRPOR 1983 2017  35306
AEXUAE05467  25.2500   55.3700    4.0    SHARJAH                        1935 1942   2477

到目前为止我尝试过:

 df=pd.read_csv(path, header=None, delim_whitespace=True)

它给了我这个错误,错误标记数据。 C错误:第2行预计10个字段,见11

然后我尝试使用

df=pd.read_csv(path, header=None, delim_whitespace=True, error_bad_lines=False)

但是,这只是跳过了不好的行,因此跳过了很多数据。即使在那之后,它也无法将包含名称的列(列索引4)保留在一列下,因为delim_whitespace = True会将名称中的空格作为单独的列读取。

我也尝试过使用

df = pd.read_csv(path, sep="\s{2,}", engine="python", header=None, error_bad_lines=False)

但这可以解读" ABU DHABI INTERNATIONAL AIRPOR 1983 2017"在一列之下,因为它们之间只有一个空格。

我考虑过手动编辑数据文件中的空格,但它有很多数据,而且我有几个实例,例如第2行中的空格。

有没有办法可以指定pandas来读取列作为数据文件提供的信息,如下所示

   Variable   Columns

   ID            1-11   
   LATITUDE     13-20   
   LONGITUDE    22-30    
   ELEVATION    32-37   
   STATE        39-40   
   NAME         42-71   
   FSTYEAR      73-76   
   LSTYEAR      78-81   
   NOBS         83-88   

或者有更好的方法来处理这种不规则间隔的数据吗?

1 个答案:

答案 0 :(得分:4)

您可以从文件中读取的第一个数据,然后使用带有参数List_SelectionChanged(object sender, EventArgs e) { if(e.Rowindex>-1) ... } colspecs的{​​{3}}:

names