x1c 0d1x--已编辑--['已解决']
我正在使用表格将PDF发票转换为panda数据框,但最后一列不太合适。我想拆分名为“PVF c/ IVA PVA s/Tx Desc% Tx Inf. IVA%P. Unit. Total Liqu.”的最后一行。我想在每个空格中拆分并添加新列[“PVFc/IVA”、“PVAs/Tx”、“Desc%”、“TxInf.”、“IVA %”、“P. Unit.”、“Total Liqu.”],并且应为每个空格拆分行。行2“7,41”、“6,30”、“65,0”、“0,03”、“6”、“2,24”、“22,40”。
我已经搜索并找到了如何拆分,但是...有些行将被拆分为7列,而其他行只被拆分为6列,我得到了一个错误。
有关更多信息,“PVP c/Iva”为NaN或“Esc.”为“NETT”的每一行都没有“PVFc/IVA”值,因此列的(len)为6。对于我的分析,可以在该行中插入0,00作为前缀,以使所有行都具有7列len()。
任何解决方案都是受欢迎的,我将从Python和Pandas开始...感谢您的时间
我应用了@Ahmed Sayed的部分代码,并取得了一些进展,将Nan列与其他列连接起来,首先我用空格替换Nan
dataframe['placeHolderColumn'] = dataframe['placeHolderColumn'].fillna(value='')
经过一些尝试e错误,我发现有时有一个以上的空格,所以我已经取代了所有的空格为一个空格,然后取代'*'
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)
但我得到这个错误
--FOUND--我必须传递另一个列名,我刚刚传递了6个新列,我有7个值dataframe[['c1','c2','c3','c4','c5','c6', 'c7']] = dataframe['newColumn'].str.split('*', expand=True)
1条答案
按热度按时间hfyxw5xn1#
这里的问题是单元格中该列的值数量不相等,我们可以通过计算值的数量来解决这个问题,无论我们在哪里看到缺失的值,我们都可以在开始处添加一个虚拟的00,这样我们以后就可以更容易地进行拆分。
首先,我们创建一个包含空格数的列。2这将给出该行中的值的个数。
然后,如果计数小于预期值,则在每个单元格字符串的开头追加一个零
最后,我们可以将列拆分为