我有一个像这样的 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
如果 reshape 操作读起来不清楚,向一维数组添加维度的更明确的方法是使用 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 suggestion :
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)
关于python - 将 Numpy 数组按列转换为 Pandas DataFrame(作为单行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327069/