我花了一些时间在看似非常简单的事情上。我只想把一个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
的问题在于维度:rooms
和price
是形状为(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()})