У меня есть столбец моего фрейма данных df, как col1. Из col1 мне нужно создать два столбца числа и слова. df ['col1'] разделить на df ['code'], df ['name'].
(index) col1
94 520XX
111 316aa
114 Entry
144 325 Sport
146 xColor35d
166 420 M Sport
167 XX
199 XX
225 645 Ai
Я пытался таким образом
import pandas as pd
import numpy as np
result = df['col1'].str.split('(\d+)([A-Za- z]+)', expand=True)
result = result.loc[:,[0,1,2,3]]
result.rename(columns={0:'split_0',1:'split_1', 2:'split_2',3:'split_3'}, inplace=True)
result['split_0'] = result['split_0'].fillna(value=pd.np.NaN, inplace=False)
result['split_0'] = result['split_0'].astype(str).replace(r'^\s*$', np.nan, regex=True)
result
Результат равен
split_0 split_1 split_2 split_3
94 520 XX None None
111 NaN 316 aa
114 Entry None None None
144 325 Sport None None None
146 xColor 35 d
166 420 M Sport None None None
167 XX None None None
199 XX None None None
225 645 Ci None None
Моя проблема возникает, когда я пытаюсь разбить столбец столбца split_0 на числои слова, а затем объединяются и имеют в конце только два столбца, содержащие числа и слова из всех столбцов split_ *, сохраняя индекс как:
code name
94 520 XX
111 316 aa
114 NaN Entry
144 325 Sport
146 35 xColor d
166 420 M Sport
167 NaN XX
199 NaN XX
225 645 Ci