У меня есть pandas кадр данных, как показано ниже:
MSuite TCase KWord
0 MS1 Nan Nan
1 NaN T1 NaN
2 NaN NaN K1
3 NaN NaN K4
4 NaN NaN K8
5 NaN NaN V3
6 NaN T2 NaN
7 NaN NaN K7
8 NaN NaN K12
9 NaN NaN V10
10 MS2 NaN NaN
11 NaN T3 NaN
12 NaN NaN K22
13 NaN NaN K15
14 NaN NaN V3
15 NaN T4 NaN
16 NaN NaN K10
17 NaN NaN K4
18 NaN NaN K12
19 NaN NaN K2
20 NaN NaN V6
И я хочу разбить его на следующие матрицы:
Матрица 1 - K Матрица
[[1, 4, 8, 7, 12, 22, 15, 10, 4, 12, 2],
[1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4],
[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]]
Для верхней строки
Каждый K # хранится в отдельном фрейме данных / массиве, для которого я хочу получить индекс для каждого K в хронологическом порядке.
Для среднего ряда
Я хочу указать, под каким TCase хранится каждый K, т. Е. T1 состоит из K1, K4, K8 ...
Bottom Row
Аналогично среднему ряду, но с обозначением MSuite.
Matrix 2 - V Matrix
[[3, 10, 3, 6],
[4, 3, 3, 5],
[1, 1, 2, 2]]
Top Row
Аналогично верхней строке в Matrix 1, где у меня есть отдельный файл со списком всех различных V # доступно, и я хотел бы просто получить индекс файла V #, который совпадает с индексом в кадре данных.
Средняя строка
Индекс V # в каждой группе T #, т. Е. В T1, V3 - 4-й KWord, а для T2 V10 - 3-й KWord.
Bottom Row
Обозначает, к какому MSuite относится V #. т.е. V3 в T1, а также V10 в T2 оба подпадают под MS1 -> 1, в то время как V3 в T3 и V6 в T4 оба подпадают под MS2 -> 2.
Попытка пока что
Я начал с циклического перебора данных, но наткнулся на это совет. Так что теперь мне интересно, нужно ли мне как-то реализовать векторизацию, но я действительно не знаю, с чего начать.
Если бы не векторизация, я бы продолжил l oop через фрейм данных, при этом кэшируя при каждом увеличении MSuite и TCase и добавляя кешированные значения.