gpt4 book ai didi

python - 将 Numpy 数组按列转换为 Pandas DataFrame(作为单行)

转载 作者:太空狗 更新时间:2023-10-29 18:24:56 33 4
gpt4 key购买 nike

我有一个像这样的 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com