You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas拆分长度不一致的列:问题排查与解决

PDF转Pandas DataFrame后多列拆分的格式问题解决记录

问题背景

用tabula将PDF发票转换为Pandas DataFrame后,最后一列PVF c/ IVA PVA s/Tx Desc% Tx Inf. IVA% P.Unit. Total Liq.格式不符合要求,需要按空格拆分为7个目标列:PVFc/IVA、PVAs/Tx、Desc%、TxInf.、IVA%、P.Unit.、Total Liq.。正常行拆分后应为7个值(例如第二行对应'7,41', '6,30', '65,0', '0,03', '6', '2,24', '22,40'),但部分行拆分后仅得到6列——当PVP c/Iva为NaN或Esc.值为NETT时,这些行缺失PVFc/IVA的值,需要补0,00作为前缀,确保所有行拆分后都是7列。

尝试的预处理操作

  • 替换空值为空格:
dataframe['placeHolderColumn'] = dataframe['placeHolderColumn'].fillna(value='')
  • 将多空格替换为单空格后转为*作为分隔符:
dataframe["newColumn"]= dataframe['newColumn'].str.replace('  ','*')
  • 统计分隔符数量:
dataframe["count2"]= dataframe['newColumn'].str.count('\*', re.I)

遇到的报错

执行拆分代码时出现错误:

dataframe[['c1','c2','c3','c4','c5','c6']] = dataframe['newColumn'].str.split('*', expand=True)

最终解决方法

排查后发现,拆分后实际会生成7个值,但代码中仅指定了6个列名,导致匹配报错。修改为指定7个列名后问题解决:

dataframe[['c1','c2','c3','c4','c5','c6', 'c7']] = dataframe['newColumn'].str.split('*', expand=True)

内容的提问来源于stack exchange,提问作者foliveir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:30:45