Как присвоить имена столбцам в массиве?
Помогите, не могу понять, только изучаю Python
Необходимо создать таблицу с именами столбцов из вот такой таблицы (она создается внутри программы, как временная при помощи слияния трех массивов код для этого слияния привожу ниже. Сделал копию части таблицы в формате CSV, ссылка https://disk.yandex.ru/d/uhjAYDykU7P7rQ

Что нужно получить на выходе? Надо получить точно такую же таблицу, с теми же самыми данными, но с именами столбцов. Данные в массиве под обозначениями (столбы) 0, 1, 2, 3, 4, 5 должны быть в таблице в столбцах с соответствующим наименованием, columns = ['data0', 'data1', 'data2', 'data3', 'data4', 'data5']. Подскажите, как это сделать? Или присвоить имена столбцам в уже созданной таблице? Обращаю внимание, что эти данные не загружаются извне, а получаются в результате работы внутри программы.
rez1 = np.c_[X_test, y_test, prediction_columns]
Ответы (2 шт):
В Numpy (а тем более в базовом Python) имена столбцам массива задать невозможно в принципе. Имена столбцов можно задать в таблице (двумерной), которая создается в Pandas. В Pandas DataFrame создается методом DataFrame, у которого есть параметр columns, который как раз и принимает список имен столбцов создаваемого объекта.
pd.DataFrame(data=.... #сам массив
index=.... #откруда брать индекс, если нужен
columns=.... #список имен столбцов
Второй вариант - создание через словарь столбцов, например так:
dataset = pd.DataFrame({'Столбец 1': data[:, 0], 'Столбец 2': data[:, 1]})
Ну и несколько видоизмененный способ:
dataset = pd.DataFrame()
dataset['Столбец 1']=data[:, 0]
dataset['Столбец 2']=data[:, 1]
Пример с использованием модуля Pandas:
import pandas as pd
df = pd.read_csv("rez1.csv", header=None, sep=";").add_prefix("data")
чтобы создать pandas DataFrame из numpy матрицы arr:
df = pd.DataFrame(arr).add_prefix("data")
результат:
In [119]: df
Out[119]:
data0 data1 data2 data3 data4 data5
0 31 33 26 37 29 31
1 19 10 14 6 18 9
2 26 33 32 20 24 31
3 10 18 26 16 22 19
4 13 25 14 18 21 16
5 23 34 31 27 23 42
6 17 24 22 20 11 20
7 15 24 20 14 20 10
8 15 20 10 26 17 13
9 22 39 28 33 27 20
In [120]: df.columns.to_list()
Out[120]: ['data0', 'data1', 'data2', 'data3', 'data4', 'data5']