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
