数据框列分别包含许多换行符 (\n) 及其值。如何将其分隔为新列和值

Data frame columns contains many newline (\n) and its value respectively .How to separate it as new columns and values too

在使用 camelot 阅读 PDF table 时,一些列被连接起来,它们的值也如下所示

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.005

我的输出应该如下所示

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  |

我希望根据换行符分隔列和值。

您使用以下 df 进行实验创建

data = [['12/12/2019', '45333\n34343','7899\nscrewio','89\n0.00','3443.12\n231232.00\n456'], ['12/12/2019', '232\n3434','7845\nnuts','78\n0.00','34.12\n232.005' ] ]

df33 = pd.DataFrame(数据,列 = ['Date', 'Facture-ref\nfactureid','Description\nitems','Payé\nEscompte','Déboursé\nPaiement\nnet'])

我确定有更优雅的方法来执行此操作,但这应该可行。

编辑:有和没有掉落。如果我误解了您的意思,请随时 post 示例数据集。 示例数据:

>>> 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