У меня есть такие столбцы:
**col_3**
MD01_TK336_AT000_PT01
MD01_TK336_AT000_PB250_PT03
MD01_TK336_AT025_PT01
MD01_TK336_AT000_TH005_PT01
MD01_TK336_AT000_SB250_PT01_BP04
внутри панды df.Обратите внимание, что другие столбцы в той же строке не должны быть забыты - они связаны друг с другом.Я хочу создать больше столбцов df, чтобы получить следующий результат:
**MD TK AT PT PB SB TH BP**
01 336 000 01
01 336 000 03 250
01 336 025 01
01 336 000 01 01
01 336 000 01 250 04
, где несуществующие значения будут просто пустыми или ''.
Я пробовал использовать:
df.col_3.str.extractall(r'([A-Za-z]+)(\d+)')
но он дает что-то похожее на групповую структуру, а при развертывании не дает имен столбцов, основанных на символах.
Редактировать: на основе ответа Питера.
Starting with:
**col_2**
MD01_TK336_AT000_PT01
MD01_TK336_AT000_PT02
>>> col_2.str.extractall(r'([A-Za-z]+)(\d+)')
0 1
match
0 0 MD 01
1 TK 336
2 AT 000
3 PT 01
1 0 MD 01
1 TK 336
2 AT 000
3 PT 02
>>> col_2.str.extractall(r'([A-Za-z]+)(\d+)')
.reset_index(level=1, drop=True)
0 1
0 MD 01
0 TK 336
0 AT 000
0 PT 01
1 MD 01
1 TK 336
1 AT 000
1 PT 02
>>> col_2.str.extractall(r'([A-Za-z]+)(\d+)')
.reset_index(level=1, drop=True)
.set_index(0, append=True)
1
0
0 MD 01
TK 336
AT 000
PT 01
1 MD 01
TK 336
AT 000
PT 02
>>> col_2.str.extractall(r'([A-Za-z]+)(\d+)')
.reset_index(level=1, drop=True)
.set_index(0, append=True)
.unstack()
1
0 AT MD PB PT TK
0 000 01 NaN 01 336
1 000 01 NaN 02 336