簡體   English   中英

將Numpy數組按列轉換為Pandas DataFrame(作為單行)

[英]Convert Numpy array to Pandas DataFrame column-wise (As Single Row)

我有一個看起來像這樣的numpy數組:

a = np.array([35,2,160,56,120,80,1,1,0,0,1])

然后我試圖將該數組轉換為具有邏輯“一列一值”的pandas數據幀,如下所示:

columns=['age','gender','height',
     'weight','ap_hi','ap_lo',
     'cholesterol','gluc','smoke',
     'alco','active']

values = a

df = pd.DataFrame(a,columns=columns)

這種方法引發了ValueError:傳遞值的形狀是(1,11),索引暗示(11,11)。 我做錯了什么以及如何以正確的方式執行它?

謝謝!

你需要numpy.reshape

columns=['age','gender','height',
     'weight','ap_hi','ap_lo',
     'cholesterol','gluc','smoke',
     'alco','active']

a = np.array([35,2,160,56,120,80,1,1,0,0,1])

df = pd.DataFrame(a.reshape(-1, len(a)),columns=columns)
print (df)
   age  gender  height  weight  ap_hi  ap_lo  cholesterol  gluc  smoke  alco  \
0   35       2     160      56    120     80            1     1      0     0   

   active  
0       1  

如果重新整形操作不清楚,那么向1d數組添加維度的更明確的方法是使用numpy.atleast_2d

pd.DataFrame(np.atleast_2d(a), columns=columns)

或者更簡單地添加[] (但如果真的很多列則更慢):

df = pd.DataFrame([a],columns=columns)
print (df)
   age  gender  height  weight  ap_hi  ap_lo  cholesterol  gluc  smoke  alco  \
0   35       2     160      56    120     80            1     1      0     0   

   active  
0       1  

感謝Divakar的建議

df = pd.DataFrame(a[None],columns=columns)
print (df)
   age  gender  height  weight  ap_hi  ap_lo  cholesterol  gluc  smoke  alco  \
0   35       2     160      56    120     80            1     1      0     0   

   active  
0       1  

另一個解決方案,謝謝piRSquared

pd.DataFrame([a], [0], columns) 

只需將數組重塑為數據幀所需的內容即可。

import pandas as pd 
import numpy as np

a = np.array([35,2,160,56,120,80,1,1,0,0,1])

columns=['age','gender','height',
 'weight','ap_hi','ap_lo',
 'cholesterol','gluc','smoke',
 'alco','active']

df = pd.DataFrame(np.reshape(a, (1,len(a))),columns=columns)

暫無
暫無

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

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