Python. Numpy. Название столбцов
Допустим есть numpy массив:
a = np.array([[1.2, -3.5, 0., -10.],
[0.4, 2.1, -0.1, 0.5],
[0., 1.1, 1., 1.5]])
Как дать названия столбцам 1,2,3,4? Я использовал
a = np.insert(a, 0, [1, 2, 3, 4], 0)
[[ 1. 2. 3. 4. ]
[ 1.2 -3.5 0. -10. ]
[ 0.4 2.1 -0.1 0.5]
[ 0. 1.1 1. 1.5]]
После я хочу сделать какую-нибудь операцию со столбцами, например сложить 1 и 3 столбцы
[[ [1,3] 2. 4. ]
[ 1.2 -3.5 -10.]
[ 0.3 2.1 0.5]
[ 1. 1.1 1.5]]
Далее сделать так:
[[ [1,3,4] 2. ]
[ -8.8 -3.5 ]
[ 0.8 2.1 ]
[ 2.5 1.1 ]]
Т.е я хочу видеть какие столбцы объединил. Добавлять лист как я хочу numpy не дает. Как это можно реализовать? Может быть какие другие библиотеки. Задавать dtype мне кажется не подходит для этого или я в нем плохо разобрался. Но я бы хотел использовать numpy массив из-за удобных функций
Ответы (1 шт):
Модуль Pandas создан для работы с табличными данными (2D и 1D массивами). 2D таблицы в Pandas называются DataFrame и представляют из себя набор проиндексированных и именованных столбцов. Каждый столбец под капотом - это 1D Numpy вектор, у которого есть наименование и индексы. В Pandas эти объекты-столбцы называются Series.
Пример:
In [129]: a = np.array([[1.2, -3.5, 0., -10.],
...: [0.4, 2.1, -0.1, 0.5],
...: [0., 1.1, 1., 1.5]])
In [130]: df = pd.DataFrame(a, columns=[1,2,3,4])
In [131]: df
Out[131]:
1 2 3 4
0 1.2 -3.5 0.0 -10.0
1 0.4 2.1 -0.1 0.5
2 0.0 1.1 1.0 1.5
In [133]: res = pd.DataFrame({"sum_1_3_4": df[[1,3,4]].sum(axis=1), 2: df[2]})
In [134]: res
Out[134]:
sum_1_3_4 2
0 -8.8 -3.5
1 0.8 2.1
2 2.5 1.1