Мне сложно создать 3D-DataFrame в Pandas. Я хочу что-то вроде этого
A B C
start end start end start end ...
7 20 42 52 90 101
11 21 213 34
56 74 9 45
45 12
Где A
, B
и т.д. дескрипторы верхнего уровня и start
и end
являются поддекрипторами. Следующие числа находятся в парах и не существует одинакового числа пар для A
, B
и т.д. Заметим, что A
имеет четыре таких пары, B
имеет только 1, а C
имеет 3.
Я не уверен, как приступить к построению этого DataFrame. Модификация этого примера не дала мне спроектированного вывода:
import numpy as np
import pandas as pd
A = np.array(['one', 'one', 'two', 'two', 'three', 'three'])
B = np.array(['start', 'end']*3)
C = [np.random.randint(10, 99, 6)]*6
df = pd.DataFrame(zip(A, B, C), columns=['A', 'B', 'C'])
df.set_index(['A', 'B'], inplace=True)
df
дали:
C
A B
one start [22, 19, 16, 20, 63, 54]
end [22, 19, 16, 20, 63, 54]
two start [22, 19, 16, 20, 63, 54]
end [22, 19, 16, 20, 63, 54]
three start [22, 19, 16, 20, 63, 54]
end [22, 19, 16, 20, 63, 54]
Есть ли способ разбивать списки в C на свои собственные столбцы?
EDIT: важна структура моего C
. Он выглядит следующим образом:
C = [[7,11,56,45], [20,21,74,12], [42], [52], [90,213,9], [101, 34, 45]]
И желаемый результат - тот, что находится наверху. Он представляет начальную и конечную точки подпоследовательностей в определенной последовательности (A
, B
. C
- это разные последовательности). В зависимости от самой последовательности существует различное количество подпоследовательностей, удовлетворяющих заданному условию, которое я ищу. В результате существует различное количество начальных: пар торцов для A
, B
и т.д.