问题描述
在使用 Camelot 读取 PDF 表格时,一些列被连接在一起,它们的值也如下所示
Date | Facture-ref\nfactureid| Description\items| Payé\nescompte |Déboursé\nPaiement\net
--------------------------------------------------------------------
12/12/2019| 45333\n34343 | 7899\nscrewio | 89\n0.00 |3443.12\n231232.00\n456
12/12/2019| 453343\n3434 | 7845\nscrewio | 78\n0.00 |34.12\n232.00\455
@H_502_4@
我的输出应该如下图
Date |facture | Facture | factureid | Description| items | Payé | Escompte| Déboursé | Paiement | net
-----------------------------------------------------
12/12/2017 | 45333 | 34343 | #al: 7899 | screwio | 89 | 0.00 | 3443.12| 231232.00 | 456|
12/12/2017 | 453343 | 3434 | #rfp: 7845 | screwio | 78 | 0.00 | 34.12 | 232.00 | 455 |
@H_502_4@
我希望基于换行符分隔列和值。
您使用以下 df 进行实验创建
data = [['12/12/2019','45333\n34343','7899\nscrewio','89\n0.00','3443.12\n231232.00\n456'],['12/12/2019'、'232\n3434'、'7845\n坚果'、'78\n0.00'、'34.12\n232.00\455'] ]
df33 = pd.DataFrame(data,columns = ['Date','Facture-ref\nfactureid','Description\nitems','Payé\nescompte','Déboursé\nPaiement\nnet'])
解决方法
我确信有一种更优雅的方法可以做到这一点,但这应该可行。
编辑:有和没有下降。如果我误解了您,请随时发布示例数据集。 样本数据:
>>> data = {'col_1':['a']*5,'col_2\ncol_3':['b\nc']*5,'col_4':['d']*5}
>>> df = pd.DataFrame(data)
>>> df
col_1 col_2\ncol_3 col_4
0 a b\nc d
1 a b\nc d
2 a b\nc d
3 a b\nc d
4 a b\nc d
带下降:
>>> for col in [i for i in df.columns if '\n' in i]:
df[col.split('\n')]=df[col].str.split('\n',expand=True)
df.drop(columns=col,inplace=True)
>>> df
col_1 col_4 col_2 col_3
0 a d b c
1 a d b c
2 a d b c
3 a d b c
4 a d b c
没有掉落:
>>> for col in [i for i in df.columns if '\n' in i]:
df[col.split('\n')]=df[col].str.split('\n',expand=True)
>>> df
col_1 col_2\ncol_3 col_4 col_2 col_3
0 a b\nc d b c
1 a b\nc d b c
2 a b\nc d b c
3 a b\nc d b c
4 a b\nc d b c