首页 > 解决方案 > 从数据框查询的结果值中添加新列

问题描述

我想解析一个 PDF 文件。该文件是每个站点收到的服务发票,由于数据敏感,我无法共享原始 PDF 文件,但Camelot提取的所有表格 都是这样的:

示例表:

product No  | Product Description | Quantity |  P.P.S  | Total Without VAT |
  123456    | Gen. Description S1 |     5    |   $15   |       $75         |
  234567    | Gen. Description S2 |     3    |  $100   |      $300         |
   USCA     |                     |          |  S.Total|      $375         |


product No  | Product Description | Quantity |  P.P.S  |  Total Without VAT |
  123456    | Gen. Description S2 |     5    |  $100   |      $500          |
  345678    | Gen. Description S3 |     3    |  $100   |      $300          |
  456789    | Gen. Description S4 |     2    |  $150   |      $300          |
   USNY     |                                  S.Total |     $1100          |

我的主要目标是生成如下所示的报告:

Product Description   |Unit P. |USCA|USNY|...|Site N| T.Services  | total cash|
Gen. Description S1   |  $15   | 5  | 0  | 0 |  0   |      5      |     $75   |
Gen. Description S2   | $100   | 3  | 5  | 0 |  0   |      8      |    $800   |
Gen. Description S3   | $100   | 0  | 3  | 0 |  0   |      3      |    $300   |
Gen. Description S4   | $150   | 0  | 2  | 0 |  0   |      2      |    $300   |

我正在尝试使用 Camelot 和 Panda DataFrame,我有一些想尝试的想法,但未能实现。当我从 PDF 收集数据时,我遇到的一个问题是跨 2 页的表被制作为它们自己的 DataFrame 表,我想根据第一行和最后一行合并这两个表。我能够获得该值,但无法用我获得的值替换该列。这给合并拼接表的想法带来了停顿。我想查看 DataFrame 的最后一行,如果没有站点,请将其与当前 DataFrame 合并,但是我无法使用正则表达式获取值,或者替换功能对我有用。

pdf_data = camelot.read_pdf('sample.pdf', flavor='lattice', pages='all', encoding='utf-8' )
table1 = pdf_data[0].df
row1= table1[0]
last_row_col1 = table1.iloc[[-1]]
site = last_row_col1[0]

print(site)
7    MGSC
Name: 0, dtype: object


print(row1)
0    Product No.:
1         1477122
2         1477126
3         1477140
4         1496648
5         1496650
6         1505461
7            MGSC

例子:

Product No            Product No 
  123456       -->      USCA
  234567       -->      USCA 

也许我的做法是错误的,我的理由是用站点标记每个服务,这样我就可以知道该服务属于哪个站点,这样在最终排序时我就知道服务来自哪里。伙计们!我花了几个小时研究 panda DataFrame,但仍然不知道它是如何工作的。请指出我正确的方向!有没有更好的方法来实现我所需要的?我设法清理数据并将所有内容合并到一个数据集中并转储到一个 CSV 文件中,这以它自己的方式很好(减少手动复制和粘贴内容的时间,拥有一个 CVS,我可以过滤和排序并制作基本得到我需要的公式)

标签: pythonpython-3.xpandasdataframe

解决方案


推荐阅读