Python 使用tabla提取PDF后重新排列表格

Python 使用tabla提取PDF后重新排列表格,python,pandas,loops,pdf,tabula,Python,Pandas,Loops,Pdf,Tabula,我使用tabla从PDF中提取了一个表。只要稍微清理一下,它就会起作用。最后一个问题是,如果一个单元格行太大,即它包含包装文本,那么tabla会将其拆分为两行,其中一行包含几乎所有的信息,第二行包含上一行中第一个单元格文本的后半部分,但其余单元格中没有 以下是一个例子: df House_Type Area Shape Blue House 3456 circle Red h

我使用tabla从PDF中提取了一个表。只要稍微清理一下,它就会起作用。最后一个问题是,如果一个单元格行太大,即它包含包装文本,那么tabla会将其拆分为两行,其中一行包含几乎所有的信息,第二行包含上一行中第一个单元格文本的后半部分,但其余单元格中没有

以下是一个例子:

    df

       House_Type             Area        Shape

       Blue House       3456          circle
       Red house        2345          square
       Small Green      987           square
       House            None          None
理想情况下,我能够将列House\u Type row House中的文本添加到列House\u Type中上面的行中,然后去掉其中包含“none”的row House

最终结果如下所示:

      df

       House_Type             Area        Shape

       Blue House             3456          circle
       Red house              2345          square
       Small Green House      987           square
我想作为一个循环来做可能会有用

    def row_funct( df):
        row = 0
        for row in df:
            if area = None:
            row += 1

但是,我很难确定从这里该怎么走,或者这是否是正确的方向

我遇到了类似的问题,并编写了以下函数,对其进行了轻微修改,以匹配您的示例:

def CleanRunResults(df):
    for row in range(len(df)-1, -1, -1):
        NoArea = pd.isnull(df['Area'].iloc[row])
        NoShape = pd.isnull(df['Shape'].iloc[row])
        YesType = pd.notnull(df['House_Type'].iloc[row])
        PrevRow = row - 1
        if NoArea and NoShape and YesType:
            df['House_Type'].iloc[PrevRow] = '{0}{1}'.format(df['House_Type'].iloc[PrevRow],df['House_Type'].iloc[row] )
    df.dropna(subset=['Shape', 'Area'], how='all', inplace=True)
    df = df[['House_Type', 'Shape', 'Area']]
    return(df)