У меня есть данные, как показано ниже в одном столбце, и я хочу разбить этот отдельный столбец на n столбцов и назвать строки и столбцы. Как я могу сделать это в Python?
----------- пример данных ----------
5
3
5
0
0
1
0
0
18
23
11
1
2
10
1
0
5
6
1
0
1
1
1
0
158
132
150
17
---- -------- Результат должен выглядеть следующим образом ---------
column0 column1 column2 column3 column4 column5 column6
row1 5 0 18 2 5 1 158
row2 3 1 23 10 6 1 132
row3 5 0 11 1 1 1 150
row4 0 0 1 0 0 0 17
Один из самых простых способов - использовать numpy и функцию изменения формы
import numpy as np
k = np.array(data)
k.reshape([row,column],order='F')
Как в вашем примере. Вы упомянули, что данные взяты из текстового файла, поэтому для получения данных из текстового файла и изменения их формы
import numpy as np
data = np.genfromtxt("sample-data.txt");
data.reshape([4,7],order='F')
вывод будет
Out[27]:
array([[ 5, 0, 18, 2, 5, 1, 158],
[ 3, 1, 23, 10, 6, 1, 132],
[ 5, 0, 11, 1, 1, 1, 150],
[ 0, 0, 1, 0, 0, 0, 17]])
Я не знаю структуру данных но при условии, что он находится в 1 гигантской колонне, как видно из образца выше. При импорте данных используется open
. Происходит следующее.
data = open("sample-data.txt",'r').readlines()
data
Out[64]:
['5\n',
'3\n',
'5\n',
'0\n',
'0\n',
'1\n',
'0\n',
'0\n',
'18\n',
'23\n',
'11\n',
'1\n',
'2\n',
'10\n',
'1\n',
'0\n',
'5\n',
'6\n',
'1\n',
'0\n',
'1\n',
'1\n',
'1\n',
'0\n',
'158\n',
'132\n',
'150\n',
'17']
Это приводит к массиву строковых значений, поскольку \n
означает следующую строку. Предполагая, что это числовые данные, вы можете использовать приведенный выше код для получения чисел.