到 DataFrame 的隐蔽列表 |表格-py | read_pdf_with_template() 问题陈述:代码片段:

问题描述

问题陈述:

我正在使用 Tabula App 用户界面从 PDF 文件中选择表格的维度作为 tabula-template 以在 JSON 中给出维度强> 格式。

选择表格维度后提取表格的Tabula App界面中的DataFrame是正确的。

但是,当我使用返回 List 对象的 read_pdf_with_template() 方法时。当我将此列表对象转换为 DataFrame 时,它​​会合并不同的列。


代码片段:

  1. 使用 read_pdf_with_template() 方法后。
  • file 是 PDF 文件
  • tabula_saved.json 是创建的 PDF 文件的 JSON 维度模板 使用 Tabula 应用界面。
tables = tabula.read_pdf_with_template(file,"tabula_saved.json")
tables

输出

[   0  \ 
 0   01/02/2018   
 1   01/02/2018   
 2   01/02/2018   
 3   01/02/2018    
 
   1 \
                      
 0   01/02/2018 7777 31-JAN-18M2M Cash Dep Chrgs 202.00                          
 1   01/02/2018 4115 NEFT : 00003- TV 18 HOME  5,52,743.00                         
 2   01/02/2018 4115 NEFT : AXISP1-TECH 25,252.00                          
 3   01/02/2018 1221 To ECS  : ECS-TP UIA 911387 66,733.00                         
 
      2   
 0     40,233.11  
 1   5,92,976.11  
 2   6,18,228.11  
 3   5,51,495.11
  1. 尝试使用以下代码转换DataFrame
df = pd.DataFrame()
df = pd.concat([c for c in tables]).drop_duplicates()
df = df.replace(r'^\s*$',np.nan,regex=True)
df = df[df.isnull().sum(axis=1) < df.shape[1] - 2].reset_index(drop=True)
df

输出

| 0           | 1                                                     | 2           |
|-------------|-------------------------------------------------------|-------------|
| 01/02/2018  | 01/02/2018 7777 31-JAN-18M2M Cash Dep Chrgs 202.00    | 40,233.11   |
| 01/02/2018  | 01/02/2018 4115 NEFT : 00003- TV 18 HOME  5,743.00 | 5,976.11 |
| 01/02/2018  | 01/02/2018 4115 NEFT : AXISP1-TECH 25,252.00          | 6,228.11 |
| 01/02/2018  | 01/02/2018 1221 To ECS  : ECS-TP UIA 911387 66,733.00 | 5,495.11 |

Tabula App Interface提取DataFrame是正确的。

| Txn Date    | Value Date | Brn Code | Particulars                 | Ref No | Debit     | Credit      | Balance           |
|-------------|------------|----------|-----------------------------|--------|-----------|-------------|-------------|
| 01/02/2018  | 01/02/2018 | 7777     | 31-JAN-18M2M Cash Dep Chrgs |        | 202.00    |             | 40,233.11   |
| 01/02/2018  | 01/02/2018 | 4115     | NEFT : 00003- TV 18 HOME    |        |           | 5,976.11 |
| 01/02/2018  | 01/02/2018 | 4115     | NEFT : AXISP1-TECH          |        |           | 25,252.00   | 6,228.11 |
| 01/02/2018  | 01/02/2018 | 1221     | To ECS  : ECS-TP UIA        | 911387 | 66,733.00 |             | 5,495.11 |

注意:请忽略此问题中的列标题

解决方法

你想要这个吗?

col_list = ['Value Date','Brn Code','Particulars','Ref No','Debit','Credit']
df['merged'] = df.apply(lambda x: ' '.join(x[col] for col in col_list),axis=1)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...