Python 使用tabla提取PDF后重新排列表格
我使用tabla从PDF中提取了一个表。只要稍微清理一下,它就会起作用。最后一个问题是,如果一个单元格行太大,即它包含包装文本,那么tabla会将其拆分为两行,其中一行包含几乎所有的信息,第二行包含上一行中第一个单元格文本的后半部分,但其余单元格中没有 以下是一个例子: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
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)