如何将PDF提取的非结构化数据第一列重复内容转为Python DataFrame表头
实现方法
你提取到的原始表格是长表结构,每3行对应一个用户的完整属性,可按以下步骤处理:
- 导入依赖并读取原始HTML表格数据
import pandas as pd # 此处替换为你从PDF提取到的HTML字符串变量 pdf_extracted_html = """ <div class="s-table-container"> <table class="s-table"> <thead> <tr> <th style="text-align: left;">1</th> <th style="text-align: right;">2</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">name</td> <td style="text-align: right;">Mike</td> </tr> <tr> <td style="text-align: left;">age</td> <td style="text-align: right;">18</td> </tr> <tr> <td style="text-align: left;">sex</td> <td style="text-align: right;">M.</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: right;">Angel</td> </tr> <tr> <td style="text-align: left;">age</td> <td style="text-align: right;">21</td> </tr> <tr> <td style="text-align: left;">sex</td> <td style="text-align: right;">F.</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: right;">Brod</td> </tr> <tr> <td style="text-align: left;">age</td> <td style="text-align: right;">34</td> </tr> <tr> <td style="text-align: left;">sex</td> <td style="text-align: right;">M.</td> </tr> </tbody> </table> </div> """ raw_df = pd.read_html(pdf_extracted_html)[0]
- 拆分分组转换为目标结构
# 按每3行一组拆分,每组对应1个用户的所有属性 user_groups = raw_df.groupby(raw_df.index // 3) # 生成新DataFrame,手动指定表头保证顺序准确 result_df = pd.DataFrame( [group[1].iloc[:, 1].values for group in user_groups], columns=['name', 'age', 'sex'] )
处理完成后的result_df输出效果如下:
| name | age | sex |
|---|---|---|
| Mike | 18 | M. |
| Angel | 21 | F. |
| Brod | 34 | M. |
内容的提问来源于stack exchange,提问作者Panda Akai
相关产品推荐
相关产品推荐

