Я прав, что ваш вывод выглядит так?
array = [pd.Series([1, 2, 3, 4, 5], index = [-3, -2, -1, 0, 1], name='first'),
pd.Series([11, 22, 33, 44, 55, 66], index = [-4, -3, -2, -1, 0, 1], name='second'),
pd.Series([111, 222, 333, 444, 555, 666, 777], index = [-4, -3, -2, -1, 0, 1, 2], name='last')]
Out:
[-3 1
-2 2
-1 3
0 4
1 5
Name: first, dtype: int64, -4 11
-3 22
-2 33
-1 44
0 55
1 66
Name: second, dtype: int64, -4 111
-3 222
-2 333
-1 444
0 555
1 666
2 777
Name: last, dtype: int64]
Если я прав, вы можете использовать pd.concat для объединения рядов.
df = pd.concat(array, axis=1)
Out:
first second last
-4 NaN 11.0 111
-3 1.0 22.0 222
-2 2.0 33.0 333
-1 3.0 44.0 444
0 4.0 55.0 555
1 5.0 66.0 666
2 NaN NaN 777
После этого вы можете заполнить значения NaN, если хотите, с помощью df.fillna(value)
, где значение должнобыть числом.Если хотите, вы можете получить матрицу:
pd.concat(array, axis=1).fillna(0).as_matrix()
Out:
array([[ 0., 11., 111.],
[ 1., 22., 222.],
[ 2., 33., 333.],
[ 3., 44., 444.],
[ 4., 55., 555.],
[ 5., 66., 666.],
[ 0., 0., 777.]])
Надеюсь, это поможет.
UPD:
Возможно, для вас будет лучше иметь таблицу типа (день, значение, id).
array = [pd.DataFrame(data=series.rename('value')).assign(ID = i) for i, series in enumerate(array)]
Out:
[ value ID
-3 1 0
-2 2 0
-1 3 0
0 4 0
1 5 0, value ID
-4 11 1
-3 22 1
-2 33 1
-1 44 1
0 55 1
1 66 1, value ID
-4 111 2
-3 222 2
-2 333 2
-1 444 2
0 555 2
1 666 2
2 777 2]
table = pd.concat(array, axis=0).reset_index().rename(columns={'index': 'day'})
Out:
day value ID
0 -3 1 0
1 -2 2 0
2 -1 3 0
3 0 4 0
4 1 5 0
5 -4 11 1
6 -3 22 1
7 -2 33 1
8 -1 44 1
9 0 55 1
10 1 66 1
11 -4 111 2
12 -3 222 2
13 -2 333 2
14 -1 444 2
15 0 555 2
16 1 666 2
17 2 777 2
После этого вы можете группировать по дням или идентификаторам и делать то, что вы хотите.