Для следующего кадра данных:
df= pd.DataFrame({"A":["HOX2A", "TRT1", "TRT1", "TRT1", "TRT1", "TP53", "TP53"], "B":[0,5,6,7,42, 1, 2], "val":["A", "T", "T", "G", "C", "A", "A"]})
A B val
0 HOX2A 0 A
1 TRT1 5 T
2 TRT1 6 T
3 TRT1 7 G
4 TRT1 42 C
5 TP53 1 A
6 TP53 2 A
Мне нужно сгруппировать сначала по столбцу A, а затем по значениям в столбце B, которые расположены в последовательном порядке.
Вывод должен выглядеть следующим образом:
HOX2A
B val
0 A
TRT1
B val
5 T
6 T
7 G
TRT1
B val
42 C
TP53
B val
1 A
2 A
Я попробовал следующее, но он не сохранил последовательный порядок значений в A и B:
import more_itertools as mit
import pandas as pd
regions = df.groupby("A")
var_list = []
for grp, data in regions:
results = [list(zip(list(data.A), list(group)) for group in
mit.consecutive_groups(data.B.to_list())]
Я нашел несколько других похожих вопросов по SO, но ничего такого, что могло бы подойти или работать для этой конкретной потребности.