Используйте Pandas для чтения треугольной матрицы, разделенной пробелами, с пустыми ячейками в виде нулей - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь использовать 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

Есть ли "более чистый" способ сделать что-то подобное?

1 Ответ

0 голосов
/ 05 сентября 2018

Используйте 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
...