pandas получить сочетания колонок

как сделать так, что бы у каждой "Общей колонки" напротив было последовательное сочетание колонок 0 1 2 3 4, например, для индекса 0

AgSPsBJODJ  8NE dap 
AgSPsBJODJ  dap i70 
AgSPsBJODJ  i70 KOJ 
AgSPsBJODJ  KOJ 7UR

4 вариации для индекса (0, 1) (1, 2) (2, 3) (3, 4)

N = 100000
s_arr = pd.util.testing.rands_array(10, N)
s_arr0 = pd.util.testing.rands_array(3, N)
s_arr1 = pd.util.testing.rands_array(3, N)
s_arr2 = pd.util.testing.rands_array(3, N)
s_arr3 = pd.util.testing.rands_array(3, N)
s_arr4 = pd.util.testing.rands_array(3, N)
df = pd.DataFrame({'Общая колонка': s_arr, '0': s_arr0, '1': s_arr1, '2': s_arr2, '3': s_arr3, '4': s_arr4 })

введите сюда описание изображения


Ответы (1 шт):

Автор решения: SergFSM

спасибо @CrazyElf за расшифровку вопроса, сам бы ни за что не догадался))

что касается решения, то попробуйте это:

>>> df
'''
  Общая колонка    0    1    2    3    4
0    TeUqYOCCvy  dUt  yGJ  gCz  1qr  yW9
1    VZziuOcTYr  Crp  C3P  f1D  5Jg  T40
2    x7s3RV1RLU  tK8  MXL  EVp  GGr  4Mn
'''

res = (df.set_index('Общая колонка').
       stack().
       droplevel(-1).
       to_frame().
       groupby('Общая колонка',sort=False).
       apply(lambda x: x.assign(shift=x[0].shift(-1))).
       dropna().
       droplevel(0))
>>> res
'''
                 0 shift
Общая колонка           
TeUqYOCCvy     dUt   yGJ
TeUqYOCCvy     yGJ   gCz
TeUqYOCCvy     gCz   1qr
TeUqYOCCvy     1qr   yW9
VZziuOcTYr     Crp   C3P
VZziuOcTYr     C3P   f1D
VZziuOcTYr     f1D   5Jg
VZziuOcTYr     5Jg   T40
x7s3RV1RLU     tK8   MXL
x7s3RV1RLU     MXL   EVp
x7s3RV1RLU     EVp   GGr
x7s3RV1RLU     GGr   4Mn
→ Ссылка