Python 数据框按列值合并行,其中日期行为空

Python 数据框按列值合并行,其中日期行为空,python,python-3.x,pandas,python-camelot,Python,Python 3.x,Pandas,Python Camelot,场景: 解析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'pa

场景: 解析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)
我的结果:

所需的\u输出:

我提出的逻辑是将这些行向上移动,我猜n-1如果date列是NaN,我不知道这个逻辑是否正确。有人能帮我正确地解决这个问题吗


我尝试了pandas groupby和聚合函数,但它只合并整个数据并删除NaN和重复日期,这是不合适的,因为每个条目都是必需的。

使用
转换-

df.loc[~df.Date.isna(), 'group'] = 1
g = df.group.fillna(0).cumsum()
df['Description'] = df.groupby(g)['Description'].transform(' '.join)
new_df =  df.loc[~df['Date'].isna()]

它用于连接行,但现在日期列消失。结果:1.0克莱斯勒资本支付0023582513 0.00 469.88 51.15 img:更新了代码@tauqeebasnow行重复img:这就是为什么我删除了额外的行,请参见new_df(最后一行)。对不起,我是根据描述而不是日期删除的。它现在可以工作了,测试一次。它仍在x轴img上重复: