Python: от таблицы в таблицу данных - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь поместить таблицу слов в DataFrame, используя приведенный ниже код ...

def writejsontable(theDataFrame):
    print(theDataFrame)
    print('-----------')

for block in iter_block_items(doc):
    tablestringarray = []
    if isinstance(block, Table):
        df = [['' for i in range(len(block.columns))] for j in range(len(block.rows))]
        for i, row in enumerate(block.rows):
            for j, cell in enumerate(row.cells):
                df[i][j] = block.cell(i,j).text
        writejsontable(df)

Код запускается, но когда я go выводю на печать вывод, это ...

[['PERFORMANCE MEASURES', 'GO', 'NO-GO', 'N/A'], ['1. Put on Body Substance Isolation.', '', '', ''], ['2. Opened the airway used a manual maneuver.', '', '', '']]

Так ли обычно печатаются кадры данных? Я видел другие примеры, когда кадры данных печатаются в виде таблиц, как структуры, когда вы вызываете print для них. Я не уверен, почему я не получаю эту красивую и аккуратную структуру, похожую на таблицу, когда я звоню print. Любая помощь очень ценится!

РЕДАКТИРОВАТЬ:

def iter_block_items(parent):
    # Get parrent element
    if isinstance(parent, Document):
        parent_elm = parent.element.body
    elif isinstance(parent, _Cell):
        parent_elm = parent._tc
    else:
        raise ValueError("something's not right")
    # Get children in parent element
    for child in parent_elm.iterchildren():
        if isinstance(child, CT_P):
            yield Paragraph(child, parent)
        elif isinstance(child, CT_Tbl):
            yield Table(child, parent)

1 Ответ

1 голос
/ 29 апреля 2020

Ваша переменная df в настоящее время представляет собой список списков, а не pandas.DataFrame. Вы можете преобразовать массив df в кадр, используя pandas.DataFrame(df)

# df = [['' for i in range(len(block.columns))] for j in range(len(block.rows))]
df= [['PERFORMANCE MEASURES', 'GO', 'NO-GO', 'N/A'],
     ['1. Put on Body Substance Isolation.', '', '', ''],
     ['2. Opened the airway used a manual maneuver.', '', '', '']]

writejsontable(pd.DataFrame(df))
...