Хорошо, давайте попробуем этот бит кода для именования этих столбцов.Во-первых, переименуйте столбцы, чтобы переместить увеличенный индекс после разделителя: «Я выбираю.Затем используйте pd.wide_to_long
, чтобы изменить форму фрейма данных, и, наконец, filter
фрейм данных, чтобы выбрать только столбцы «значения».
df.columns = df.columns.str.replace(r'(\d+)_(\w+)',r'\2:\1')
pd.wide_to_long(df.reset_index(),
['0_type','1_type','0_value','1_value','firstname_value','lastname_value'],
'index',
'Num',
sep=':')\
.reset_index()\
.filter(like='value')
output:
0_value 1_value firstname_value lastname_value
0 1 2 test1 test1
1 2 email1 NaN NaN
2 3 email2 NaN NaN
3 4 email3 test2 test2
4 5 email4 NaN NaN
5 6 email5 test3 test3
6 7 email6 test4 test4
7 8 email7 test5 test5
8 9 email8 test6 test6
9 10 email9 test7 test7
10 11 email10 test8 test8
11 12 email11 test9 test9
12 13 email12 test10 test10
13 14 email13 test11 test11
14 15 email14 test12 test12
15 16 email15 test13 test13
16 17 email16 test14 test14
17 18 email17 test15 test15