Как преобразовать массив Numpy в Panda DataFrame - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть массив Numpy, который выглядит следующим образом:

[400.31865662]
[401.18514808]
[404.84015554]
[405.14682194]
[405.67735105]
[273.90969447]
[274.0894528]

Когда я пытаюсь преобразовать его в Panda Dataframe со следующим кодом

y = pd.DataFrame(data)
print(y)

, я получаю следующий выводпри печати.Почему я получаю все эти нули?

            0
0  400.318657
            0
0  401.185148
            0
0  404.840156
            0
0  405.146822
            0
0  405.677351
            0
0  273.909694
            0
0  274.089453

Я хотел бы получить один столбец данных, который выглядит так:

400.31865662
401.18514808
404.84015554
405.14682194
405.67735105
273.90969447
274.0894528

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Я только что понял свою ошибку.(data) - это список массивов:

[array([400.0290173]), array([400.02253235]), array([404.00252113]), array([403.99466754]), array([403.98681395]), array([271.97896036]), array([271.97110677])]

Поэтому я использовал np.vstack(data) для его конкатенации

conc = np.vstack(data)

[[400.0290173 ]
 [400.02253235]
 [404.00252113]
 [403.99466754]
 [403.98681395]
 [271.97896036]
 [271.97110677]]

Затем я преобразую конкатенированный массив в кадр данных Pandas с помощью

newdf = pd.DataFrame(conc)


    0
0  400.029017
1  400.022532
2  404.002521
3  403.994668
4  403.986814
5  271.978960
6  271.971107

Et voilà!

0 голосов
/ 02 июля 2019

Есть другой способ, который не упоминается в других ответах.Если у вас есть массив NumPy, который по существу представляет собой вектор строки (или вектор столбца), то есть форму, подобную (n, ), то вы можете сделать следующее:

# sample array
x = np.zeros((20))
# empty dataframe
df = pd.DataFrame()
# add the array to df as a column
df['column_name'] = x

Таким образом, вы можете добавить несколько массивов в виде отдельных столбцов.

0 голосов
/ 17 декабря 2018

Вы можете сгладить массив numpy:

import numpy as np
import pandas as pd

data = [[400.31865662],
        [401.18514808],
        [404.84015554],
        [405.14682194],
        [405.67735105],
        [273.90969447],
        [274.0894528]]

arr = np.array(data)

df = pd.DataFrame(data=arr.flatten())

print(df)

Выход

            0
0  400.318657
1  401.185148
2  404.840156
3  405.146822
4  405.677351
5  273.909694
6  274.089453
...