【问题标题】:Pandas read file with no delimiter and with different column widths熊猫读取没有分隔符和不同列宽的文件
【发布时间】:2022-07-01 21:33:25
【问题描述】:

我想使用 pandas 读取纯文本文件。 我有没有分隔符和不同宽度的条目,如下所示:

59967Y98Doe John            6211100004545SO20140314-  00024278
N0546664SCHMIDT-PETER       7441100008300AW20140314-  00023643
G4894jmhTAKLONSKY-JUERGEN   4211100005000TB20140315   00023882
34875738PODESBERG-SCHUMPERTS6211100003671SO20140315   00024622
  • 1-8 是一个字符串。
  • 9-28 是一个字符串。
  • 29-31 是数字。
  • 32-34 是数字。
  • 35-41 是数字。
  • 42-43 是一个字符串。
  • 44-51 是日期 (yyyyMMdd)。
  • 52 是减号或空白
  • Rest 是没有小数点的货币金额(最后 2 位总是在小数点之后)。例如:- 00024278 = -242.78 欧元

我知道有pd.read_fwf

有一个参数width。我可以这样做:

pd.read_fwf(StringIO(txt), widths=[8], header="Peronal Nr.")

但是我怎样才能读取具有不同列宽的文件呢?

【问题讨论】:

    标签: python pandas text


    【解决方案1】:

    正如widths 中的s 所建议的,您可以传递一个宽度列表:

    pd.read_fwf(io.StringIO(txt), widths=[8,20,3,3,7,2,8,1,99], header=None)
    

    输出:

              0                     1    2    3     4   5         6    7      8
    0  59967Y98              Doe John  621  110  4545  SO  20140314    -  24278
    1  N0546664         SCHMIDT-PETER  744  110  8300  AW  20140314    -  23643
    2  G4894jmh     TAKLONSKY-JUERGEN  421  110  5000  TB  20140315  NaN  23882
    3  34875738  PODESBERG-SCHUMPERTS  621  110  3671  SO  20140315  NaN  24622
    

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2014-08-27
      相关资源
      最近更新 更多