[英]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.