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

How to convert numpy one dimensional array to Pandas Series or Dataframe

我在看似很容易的事情上花了一些时间。我想要的只是将一个 numpy 数组转换为一个系列,然后组合系列来制作一个数据框。我有两个 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) 的二维数组,而 pd.Series需要一维数组。要重塑它们,您可以使用不同的方法,其中之一是 .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()})