Отрицательные числа датафрейм
Делаю датафрейм из списка a, но положительные числа записываются в датафрейм, а отрицательные нет - как исправить?
n = 10
a = [[1,5,-6,8,9],[-2,-6,-7,-8],[0,3,4,5,-6,-7,-8]]
res = pd.DataFrame(index=list(range(0,n)))
for i in range(len(a)):
res = res.join(pd.DataFrame(a[i], index=[x for x in a[i]], columns=[i]))
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
узнаЮ свой ответ...
Вам нужно понять, как работает метод join и его параметр index - в данном случае индекс значения берется равным самому значению. соответственно, значения с отрицательным индексом отпадают. поэтому берите индекс по абсолютному значению.
for i in range(len(a)):
res = res.join(pd.DataFrame(a[i], index=[abs(x) for x in a[i]], columns=[i]))
res:
0 1 2
0 NaN NaN 0.0
1 1.0 NaN NaN
2 NaN -2.0 NaN
3 NaN NaN 3.0
4 NaN NaN 4.0
5 5.0 NaN 5.0
6 -6.0 -6.0 -6.0
7 NaN -7.0 -7.0
8 8.0 -8.0 -8.0
9 9.0 NaN NaN
Автор решения: SergFSM
→ Ссылка
чтобы отрицательные числа добавить с соответствующим индексом можно попробовать такой код:
res = pd.concat([pd.Series(j,j,name=i) for i,j in enumerate(a)],1)
print(res)
'''
0 1 2
-8 NaN -8.0 -8.0
-7 NaN -7.0 -7.0
-6 -6.0 -6.0 -6.0
-2 NaN -2.0 NaN
0 NaN NaN 0.0
1 1.0 NaN NaN
3 NaN NaN 3.0
4 NaN NaN 4.0
5 5.0 NaN 5.0
8 8.0 NaN NaN
9 9.0 NaN NaN
