如何将numpy一维数组转换为Pandas系列或Dataframe



我花了一些时间在看似非常简单的事情上。我只想把一个numpy数组转换成一个Series,然后把Series组合成一个数据帧。我有两个numpy数组。

import numpy as np
rooms = 2*np.random.rand(100, 1) + 3
price = 265 + 6*rooms + abs(np.random.randn(100, 1))

我想把房间和价格转换成系列,然后把这两个系列组合成一个数据帧,制作lmplot

有人能告诉我怎么做吗?谢谢

您可以使用ravel()将数组转换为一维数据:

pd.DataFrame({
'rooms': rooms.ravel(),
'price': price.ravel()
})

将数组直接传递给pd.Series的问题在于维度:roomsprice是形状为(100,1)的2d数组,而pd.Series需要1d数组。要重塑它们,可以使用不同的方法,其中之一是.squeeze(),即:

import pandas as pd
import numpy as np
rooms = 2*np.random.rand(100, 1) + 3
price = 265 + 6*rooms + abs(np.random.randn(100, 1))
rooms_series = pd.Series(rooms.squeeze())
price_series = pd.Series(price.squeeze())

现在,从系列到数据帧,您可以执行以下操作:

pd.DataFrame({'rooms': rooms_series,
'price': price_series})

或者直接从numpy数组:

pd.DataFrame({'rooms': rooms.squeeze(),
'price': price.squeeze()})

最新更新