Python 中的自由文本到 pandas 数据框

问题描述 投票:0回答:1

我有一个包含许多表格的文本文件。我想将这些表捕获到数据框中。问题是,尽管这些表格看起来像表格,但它们在结构上只是文本。它们看起来像表格的原因是间距的使用。像这样:

                       Three Months Ended    Nine Months Ended
                      ------------------    -----------------
                       November 30,          November 30,
                       1996       1995       1996       1995
                      -------    -------   --------    --------
<S>                    <C>        <C>       <C>         <C> 
DEPARTMENTA Team 1     73,003    $52,729   $235,753    $169,532
DEPARTMENTA Team 2     51,129     37,770    162,884     119,006

我希望数据框看起来像这样: enter image description here

用文字描述数据框:5 列:

  1. 部门/团队
  2. 截至 1996 年 11 月 30 日的三个月
  3. 截至 1995 年 11 月 30 日的三个月
  4. 截至 1995 年 11 月 30 日的九个月
  5. 截至 1996 年 11 月 30 日的九个月

加上标题和 20 行数据

我试图识别任何标记来帮助我解析它,但看起来没有任何标记。它不是 html xml 或 excel..只是文本

谢谢您的帮助

python pandas import datatable scrape
1个回答
0
投票

如果两个或更多空格严格出现在列之间,那么您可以使用 pd.read_table

pd.read_csv
 以及超过 1 个空格作为分隔符并跳过带有标题的行,排序如下:

headerhight = 6 fieldsep = r'\t+|\s{2,}' names = ['your', 'names', 'for', 'each', 'column'] pd.read_table( file, skiprows=headerhight, sep=fieldsep, header=None, names=names, engine='python', dtype=str)
剩下的就是清理数据,比如:

for col in df.columns[1:]: df[col] = ( df[col] .str.lstrip('$') .str.replace(',', '.') .astype(float) )
但是更精确的方法仍然取决于上下文。

© www.soinside.com 2019 - 2024. All rights reserved.