场景: 解析 PDF 银行对账单并转换为干净且格式化的 csv 文件。
我尝试过的: 我设法使用 camelot 库解析 pdf 文件(表格格式),但在格式化方面未能产生所需的结果。
代码:
import camelot
import pandas as pd
tables = camelot.read_pdf('test.pdf', pages = '3')
for i, table in enumerate(tables):
print(f'table_id:{i}')
print(f'page:{table.page}')
print(f'coordinates:{table._bbox}')
tables = camelot.read_pdf('test.pdf', flavor='stream', pages = '3')
columns = df.iloc[0]
df.columns = columns
df = df.drop(0)
df.head()
for c in df.select_dtypes('object').columns:
df[c] = df[c].str.replace('$', '')
df[c] = df[c].str.replace('-', '')
def convert_to_float(num):
try:
return float(num.replace(',',''))
except:
return 0
for col in ['Deposits', 'Withdrawals', 'Balance']:
df[col] = df[col].map(convert_to_float)
我想出的逻辑是将这些行向上移动我猜如果日期列是 NaN 则为 n-1 我不知道这个逻辑是否正确。谁能帮我正确解决这个问题?
我尝试了 pandas groupby 和聚合函数,但它只合并整个数据并删除 NaN 和重复日期,这是不合适的,因为每个条目都是必需的。