【问题标题】:Use Pandas to to read whitespace delimited triangular matrix with empty cells as zeros使用 Pandas 读取空格分隔的三角矩阵,空单元格为零
【发布时间】:2018-09-05 18:48:06
【问题描述】:

我正在尝试使用 pandas.read_table() 从文本文件中读取空格分隔的下三角矩阵。矩阵的零项留空。

    C1  C2  C3
R1   1
R2   2   3
R3   5   6   7

目前,我有以下丑陋的两步解决方案。

header = pd.read_table('test.txt', delim_whitespace=True, nrows=0)
names = list(header.columns.values)
names.insert(0, '')

df = pd.read_table('test.txt', delim_whitespace=True,
                        names=names, skiprows=1, index_col=0)

这确实给了我想要的东西。输出:

    C1   C2  C3
R1  1   NaN NaN
R2  2   3.0 NaN
R3  5   6.0 7.0

有没有一种“更清洁”的方式来做类似的事情?

【问题讨论】:

  • pd.read_table('text.txt', delim_whitespace=True)的输出是什么
  • 我收到ParserError: Error tokenizing data. C error: Expected 3 fields in line 4, saw 4
  • 为什么要指定nrows=0。您正在打开一个文件并读取零行。
  • mad_:这是一个 hack,所以我可以阅读标题行。我可以使用 0 或 1 似乎没有区别。
  • 也许可以试试fixed width

标签: python pandas data-munging


【解决方案1】:

使用pandas.read_fwf读取固定宽度的文件

text = """\
    C1  C2  C3
R1   1
R2   2   3
R3   5   6   7"""

pd.read_fwf(pd.io.common.StringIO(text), index_col=0)

    C1   C2   C3
R1   1  NaN  NaN
R2   2  3.0  NaN
R3   5  6.0  7.0

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多