python - 从数据框查询的结果值中添加新列
问题描述
我想解析一个 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,我可以过滤和排序并制作基本得到我需要的公式)
解决方案
推荐阅读
- c# - C# SerialPort 写入行为不同的调试与运行时
- python - 如何在 Python 中进行网页抓取?
- python - 有没有办法使 Dash 中的 DashTable 非交互式?
- python - 使用两个 for 循环进行列表理解
- python - Keras - 验证损失和准确性停留在 0
- javascript - Google chrome javascript append 不会添加所有节点
- python-3.x - FileNotFoundError: [Errno2] | Python, using NumPy save and load
- firebase - 在 Dart ERROR 中:输入“列表”
' 不是类型 'Map 的子类型 ' 在与 Firestore 的颤振中 - flutter - 无法在 Flutter 中将变量值从一个无状态 Widget 传递到另一个
- python - 如何使用 SQLAlchemy 将查询结果传递给变量(作为字符串)?