Преобразование массива NumPy в Pandas DataFrame - PullRequest
0 голосов
/ 31 мая 2018

У меня есть простой массив размером 31x36, и я хочу преобразовать его в пандас, чтобы обработать его.Я пытаюсь преобразовать его, используя следующий код:

pd.DataFrame(data=matrix,
          index=np.array(range(1, 31)),
          columns=np.array(range(1, 36)))

Однако я получаю следующую ошибку:

ValueError: Форма переданных значений (36, 31), индексы подразумевают (35, 30)

Как решить проблему и правильно ее преобразовать?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

В дополнение к вышеприведенному ответу range(1, X) описывает набор чисел от 1 до X-1 включительно.Вам нужно использовать range(1, 32) и range(1, 37), чтобы сделать то, что вы описываете.

0 голосов
/ 31 мая 2018

Вы столкнулись с ошибкой, поскольку аргумент end в range(start, end) равен не включительно .У вас есть несколько вариантов для учета этого:

Не передавать индекс и столбцы

Просто используйте df = pd.DataFrame(matrix).Конструктор pd.DataFrame неявно добавляет целочисленные индексы.

Передача в форме массива

matrix.shape дает кортеж числа строк и столбцов, поэтому вам не нужно указывать их вручную.Например:

df = pd.DataFrame(matrix, index=range(matrix.shape[0]),
                          columns=range(matrix.shape[1]))

Если вам нужно начать с 1, не забудьте добавить 1:

df = pd.DataFrame(matrix, index=range(1, matrix.shape[0] + 1),
                          columns=range(1, matrix.shape[1] + 1))
0 голосов
/ 31 мая 2018

Что касается того, что вы попытались потерпеть неудачу, диапазоны отключены на 1

pd.DataFrame(data=matrix,
          index=np.array(range(1, 32)),
          columns=np.array(range(1, 37)))

Поскольку последнее значение не входит в диапазон

На самом деле вы смотрите на то, что выВы могли бы просто сделать:

pd.DataFrame(data=matrix,
          index=np.arange(1, 32)),
          columns=np.arange(1, 37)))

Или в чистом виде pandas:

pd.DataFrame(data=matrix,
          index=pd.RangeIndex(range(1, 32)),
          columns=pd.RangeIndex(range(1, 37)))

Также, если вы не укажете параметры индекса и столбца, автоматически генерируетсясоставлен индекс и столбцы, которые начнутся с 0.Непонятно, зачем вам нужно начинать с 1

Вы также не могли передать параметры индекса и столбца и просто изменили их после построения:

In[9]:
df = pd.DataFrame(adaption)
df.columns = df.columns+1
df.index = df.index + 1
df

Out[9]: 
          1         2         3         4         5         6
1 -2.219072 -1.637188  0.497752 -1.486244  1.702908  0.331697
2 -0.586996  0.040052  1.021568  0.783492 -1.263685 -0.192921
3 -0.605922  0.856685 -0.592779 -0.584826  1.196066  0.724332
4 -0.226160 -0.734373 -0.849138  0.776883 -0.160852  0.403073
5 -0.081573 -1.805827 -0.755215 -0.324553 -0.150827 -0.102148
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...