Предисловие, сказав, что, возможно, есть более эффективные способы сделать это.Тем не менее, вы можете использовать str.find ('/'), чтобы помочь с индексированием:
df=pd.DataFrame({'a':[1,2,3],'CPC':['Y10T403/4602','H02S20/00','H01L31/02168']})
a CPC
0 1 Y10T403/4602
1 2 H02S20/00
2 3 H01L31/02168
[i[i.find('/')-2:i.find('/')+3] for i in df['CPC']]
['03/46', '20/00', '31/02']
Таким образом, вы можете определить функцию для передачи df.apply()
def parse_cpc(val):
elems=[]
elems.append(val[0])
elems.append(val[1:3])
elems.append(val[3])
elems.append(val[4:val.find('/')])
elems.append(val[val.find('/')-2:val.find('/')+2])
elems.append(val[val.find('/')-2:val.find('/')+3])
return elems
и примените его, затем разбейте столбец на несколько столбцов (* -редактировано для удаления ненужной лямбды)
df['p']=df['CPC'].apply(parse_cpc)*
a CPC p
0 1 Y10T403/4602 [Y, 10, T, 403, 03/4, 03/46]
1 2 H02S20/00 [H, 02, S, 20, 20/0, 20/00]
2 3 H01L31/02168 [H, 01, L, 31, 31/0, 31/02]
df[[1,2,3,4,5,6]]=pd.DataFrame(df['p'].values.tolist())
a CPC p 1 2 3 4 5 6
0 1 Y10T403/4602 [Y, 10, T, 403, 03/4, 03/46] Y 10 T 403 03/4 03/46
1 2 H02S20/00 [H, 02, S, 20, 20/0, 20/00] H 02 S 20 20/0 20/00
2 3 H01L31/02168 [H, 01, L, 31, 31/0, 31/02] H 01 L 31 31/0 31/02
Затем опустите столбец перехода
df.drop('p', axis=1, inplace=True)
a CPC 1 2 3 4 5 6
0 1 Y10T403/4602 Y 10 T 403 03/4 03/46
1 2 H02S20/00 H 02 S 20 20/0 20/00
2 3 H01L31/02168 H 01 L 31 31/0 31/02