【问题标题】:Read tab-delimited fields with pandas, some lines with more than one tabs用 pandas 读取制表符分隔的字段,有些行有多个制表符
【发布时间】:2019-06-04 14:23:31
【问题描述】:

我正在尝试使用 Pandas 读取制表符分隔的 txt 文件。该文件如下所示:

data file sample

14.38   14.21   0.8951  5.386   3.312   2.462   4.956   1<p>
14.69   14.49   0.8799  5.563   3.259   3.586   5.219   1<p>
14.11   14.12   0.8911  5.422   3.302   2.723  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   &nbsp;&nbsp;&nbsp;       5        1<p>

有些行有额外的标签。如果我使用 read_csv 或 read_fwf,并指定 sep='\t'。我得到的结果如下所示:

d

0   15.26\t14.84\t0.871\t5.763\t3.312\t2.221\t5.22\t1<p>
1   14.88\t14.57\t0.8811\t5.554\t3.333\t1.018\t4.9 <p>

对于我可以指定哪些参数来处理此问题,您有什么建议吗?谢谢。

解决方案:

使用 pd.read_csv(filename, delim_whitespace=True)

【问题讨论】:

  • 试试 read_csv(delim_whitespace=True)
  • 不知道是什么问题。当数据中有两个选项卡时,您是否希望结果包含 \t\t ?此外,如果您将数据作为字符串而不是 .png 发布,我可以更轻松地进行调试。
  • @Vaishali,非常感谢!这行得通!

标签: pandas


【解决方案1】:

Pandas read_csv 非常通用,您可以将它与 delim_whitespace = True 一起使用来处理可变数量的空格。

df = pd.read_csv(filename, delim_whitespace=True)

选项 2:使用分隔符参数

df = pd.read_csv(filename, sep='\t+')

【讨论】:

    【解决方案2】:

    如果我使用此代码:

    import pandas as pd
    parsed_csv_txt = pd.read_csv("tabbed.txt",sep="\t")
    print(parsed_csv_txt)
    

    关于这个文件:

    a   b   c   d   e
    14.69   2452    982 234 12
    14.11   5435    234     12
    16.63   1       12  66
    

    我明白了:

           a     b      c      d   e
    0  14.69  2452  982.0  234.0  12
    1  14.11  5435  234.0    NaN  12
    2  16.63     1    NaN   12.0  66
    

    我们在这里看到的输出有什么问题吗?

    如果您想要不同的输出,例如:

           a     b    c    d     e
    0  14.69  2452  982  234  12.0
    1  14.11  5435  234   12   NaN
    2  16.63     1   12   66   NaN
    

    使用此代码:

    import pandas as pd
    parsed_csv_txt = pd.read_csv("tabbed.txt",delim_whitespace=True)
    print(parsed_csv_txt)
    

    注意

    有关值之间的可变数量空白主题的更长时间的讨论,请查看此讨论:Can pandas handle variable-length whitespace as column delimiters

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多