我有一个dataframe列,其值如下:

HexNAc(6)Hex(7)Fuc(1)NeuAc(3)
HexNAc(6)Hex(7)Fuc(1)NeuAc(3)
HexNAc(5)Hex(4)NeuAc(1)
HexNAc(6)Hex(7)

我要将此信息拆分为多个列:
HexNAc Hex Fuc NeuAc
6      7   1   3
6      7   1   3
5      4   0   1
6      7   0   0

最好的方法是什么?

最佳答案

可以通过字符串拆分和explodepandas版本>=0.25)然后pivot的组合来完成其余部分将清理一些列并填充缺少的值。

import pandas as pd
s = pd.Series(['HexNAc(6)Hex(7)Fuc(1)NeuAc(3)', 'HexNAc(6)Hex(7)Fuc(1)NeuAc(3)',
               'HexNAc(5)Hex(4)NeuAc(1)', 'HexNAc(6)Hex(7)'])

(pd.DataFrame(s.str.split(')').explode().str.split('\(', expand=True))
   .pivot(columns=0, values=1)
   .rename_axis(None, axis=1)
   .dropna(how='all', axis=1)
   .fillna(0, downcast='infer'))

  Fuc Hex HexNAc NeuAc
0   1   7      6     3
1   1   7      6     3
2   0   4      5     1
3   0   7      6     0

10-01 15:49