Как создать датафрейм
Как создать dataframe res из a, если каждый [ ] в a это столбец с названием 1,2,3 (но может быть и больше), а кол-во строк 40. Пропуски заполнены np.nan, к примеру значение 25 должно лежать по индексу 24. 15 на индексе 14, если 7 то на 6 и тп.
a = [ [7, 25, 29], [1, 14, 15, 27], [0, 10, 15] ]
Ответы (3 шт):
Автор решения: Namerek
→ Ссылка
import pandas as pd
from itertools import zip_longest
a = [
[7, 25, 29],
[1, 14, 15, 27],
[0, 10, 15]
]
res = pd.DataFrame(
dict(
[
*enumerate(
zip(
*zip_longest(
*a,
fillvalue=None
)
),
start=1
)
]
)
)
print(res)
output
1 2 3
0 7.0 1 0.0
1 25.0 14 10.0
2 29.0 15 15.0
3 NaN 27 NaN
Автор решения: strawdog
→ Ссылка
Можно попробовать так:
import pandas as pd
a = [ [7, 25, 29], [1, 14, 15, 27], [0, 10, 15] ]
n = 40
res = pd.DataFrame(index=list(range(0,n)))
for i in range(len(a)):
res = res.join(pd.DataFrame(a[i], index=[x-1 for x in a[i]], columns=[i+1]))
res:
1 2 3
0 NaN 1.0 NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
6 7.0 NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
9 NaN NaN 10.0
10 NaN NaN NaN
11 NaN NaN NaN
12 NaN NaN NaN
13 NaN 14.0 NaN
14 NaN 15.0 15.0
15 NaN NaN NaN
16 NaN NaN NaN
17 NaN NaN NaN
18 NaN NaN NaN
19 NaN NaN NaN
20 NaN NaN NaN
21 NaN NaN NaN
22 NaN NaN NaN
23 NaN NaN NaN
24 25.0 NaN NaN
25 NaN NaN NaN
26 NaN 27.0 NaN
27 NaN NaN NaN
28 29.0 NaN NaN
29 NaN NaN NaN
30 NaN NaN NaN
31 NaN NaN NaN
32 NaN NaN NaN
33 NaN NaN NaN
34 NaN NaN NaN
35 NaN NaN NaN
36 NaN NaN NaN
37 NaN NaN NaN
38 NaN NaN NaN
39 NaN NaN NaN
Автор решения: SergFSM
→ Ссылка
попробуйте еще такой вариант:
res = (pd.concat([pd.Series(i, index=i) for i in a], axis=1).
reindex(range(n)).
set_axis(range(1, len(a)+1), axis=1).
shift(-1))
'''
1 2 3
0 NaN 1.0 NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
6 7.0 NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
9 NaN NaN 10.0
10 NaN NaN NaN
11 NaN NaN NaN
12 NaN NaN NaN
13 NaN 14.0 NaN
14 NaN 15.0 15.0
15 NaN NaN NaN
16 NaN NaN NaN
17 NaN NaN NaN
18 NaN NaN NaN
19 NaN NaN NaN
20 NaN NaN NaN
21 NaN NaN NaN
22 NaN NaN NaN
23 NaN NaN NaN
24 25.0 NaN NaN
25 NaN NaN NaN
26 NaN 27.0 NaN
27 NaN NaN NaN
28 29.0 NaN NaN
29 NaN NaN NaN
30 NaN NaN NaN
31 NaN NaN NaN
32 NaN NaN NaN
33 NaN NaN NaN
34 NaN NaN NaN
35 NaN NaN NaN
36 NaN NaN NaN
37 NaN NaN NaN
38 NaN NaN NaN
39 NaN NaN NaN