[英]Create pandas dataframe from numpy array
要从numpy创建一个熊猫数据框,我可以使用:
columns = ['1','2']
data = np.array([[1,2] , [1,5] , [2,3]])
df_1 = pd.DataFrame(data,columns=columns)
df_1
如果我改为使用:
columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame(data,columns=columns)
df_1
其中每个数组都是一列数据。 但这会引发错误:
ValueError: Wrong number of items passed 3, placement implies 2
熊猫是否支持这种数据格式,或者我必须使用示例1中的格式吗?
您需要转置numpy
数组:
df_1 = pd.DataFrame(data.T, columns=columns)
要了解为什么这样做是必要的,请考虑数组的形状:
print(data.shape)
(2, 3)
形状元组中的第二个数字或数组中的列数必须等于数据框中的列数。
当我们对数组进行转置时,将对数组的数据和形状进行转置,从而使其能够传递到具有两列的数据帧中:
print(data.T.shape)
(3, 2)
print(data.T)
[[1 1]
[2 5]
[2 3]]
DataFrame是从数组中固有地按此顺序创建的。
无论哪种方式,您都需要转置一些东西。
一种选择是指定index = columns然后转置整个对象。 这将为您提供相同的输出。
columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame(data, index=columns).T
df_1
如上所述,传递data.T也是完全可以接受的(假设数据是ndarray类型)。
在第二种情况下,您可以使用:
df_1 = pd.DataFrame(dict(zip(columns, data)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.