簡體   English   中英

如何將 Numpy 數組列表轉換為 Pandas DataFrame

[英]How to convert a list of Numpy arrays to a Pandas DataFrame

我有一個 Numpy 數組列表,如下所示:

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

當我嘗試使用以下代碼將其轉換為 Pandas 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

你可以展平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

由於我假設這篇文章的許多訪問者不是因為 OP 的特定且不可重現的問題而來到這里,所以這里有一個一般性的答案

df = pd.DataFrame(array)

pandas的優點是美觀(如 Excel),因此使用列名很重要。

import numpy as np
import pandas as pd

array = np.random.rand(5, 5)
array([[0.723, 0.177, 0.659, 0.573, 0.476],
       [0.77 , 0.311, 0.533, 0.415, 0.552],
       [0.349, 0.768, 0.859, 0.273, 0.425],
       [0.367, 0.601, 0.875, 0.109, 0.398],
       [0.452, 0.836, 0.31 , 0.727, 0.303]])
columns = [f'col_{num}' for num in range(5)]
index = [f'index_{num}' for num in range(5)]

這是神奇發生的地方:

df = pd.DataFrame(array, columns=columns, index=index)
            col_0     col_1     col_2     col_3     col_4
index_0  0.722791  0.177427  0.659204  0.572826  0.476485
index_1  0.770118  0.311444  0.532899  0.415371  0.551828
index_2  0.348923  0.768362  0.858841  0.273221  0.424684
index_3  0.366940  0.600784  0.875214  0.108818  0.397671
index_4  0.451682  0.836315  0.310480  0.727409  0.302597

我剛剛弄清楚我的錯誤。 (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]]

然后我使用

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

瞧!

還有一種方法,其他答案中沒有提到。 如果你有一個 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

這樣您就可以將多個數組添加為單獨的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM