#python-2.7 #dataframe
#python-2.7 #dataframe
Вопрос:
У меня есть данные, как показано ниже, в одном столбце, и я хочу разделить этот один столбец на 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
Ответ №1:
Один из самых простых способов — использовать numpy и функцию reshape
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]:
['5n',
'3n',
'5n',
'0n',
'0n',
'1n',
'0n',
'0n',
'18n',
'23n',
'11n',
'1n',
'2n',
'10n',
'1n',
'0n',
'5n',
'6n',
'1n',
'0n',
'1n',
'1n',
'1n',
'0n',
'158n',
'132n',
'150n',
'17']
В результате получается массив строковых значений, которые n
означают следующую строку. Предполагая, что это числовые данные, вы захотите использовать приведенный выше код для получения чисел.
Комментарии:
1. Он возвращает ошибку значения «ValueError: не удается преобразовать массив размером 1 в форму (3,2)», и я также хочу назвать столбцы и строки как c1,c2…cn и r1, r2..rn
2. Как указано в ошибке, у вас есть массив, равный 1, и он не может преобразоваться в массив 3×2. Как вы вводите свои данные в python?
3. Я открываю те же данные из текстового файла ‘sample-data.txt ‘:
import numpy as np data = open("sample-data.txt", 'r').readlines() k = np.array(data) k.reshape([4,6],order='F') print(k)
4. в образце набора данных 28 записей, поэтому вы не можете создать матрицу 4×6. импорт — это другое дело, ваши данные такие же, как в примере? Если это так, то чтение строк таким образом, как вы, превратит их в строки, что может вызвать проблему. Я снова обновлю свой пост.