【问题标题】:Pb converting a list of pandas.Series into a numpy array of pandas.Seriespb 将 pandas.Series 列表转换为 pandas.Series 的 numpy 数组
【发布时间】:2014-04-13 01:51:49
【问题描述】:

我想将pandas.Series 的列表转换为pandas.Series 的numpy 数组。但是当我调用数组构造函数时,它也会转换我的系列。

>>> l = [Series([1,2,3]),Series([4,5,6])]
>>> np.array(l)
array([[1, 2, 3],
       [4, 5, 6]], dtype=int64)

我的列表很小(约 10 个元素),所以对于 performances issues,我想避免创建 pandas.DataFrame。 有没有简单的解决方法?

提前致谢

【问题讨论】:

  • 当然创建系列也很昂贵(它比 DataFrame 好得多吗?)真的不清楚你为什么要这样做(为什么不直接使用 numpy 呢?)。
  • 我正在记录大约 n (~20) 个变量的一些实时测量。在每条记录中,我正在计算 m 的子集(可能是 1 到 20,在每次迭代中不同)变量的 rolling_moment,并比较这些数据。目前,我正在数据框中写入实时数据(索引大小是预期度量的 nb,列大小是 20),选择我需要的 m 个仪器,并存储 rolling_moment(myDf.iloc[Ai:Bi])在一个数组中(Ai:Bi 对于 m 的每个元素都是不同的)。最好的方法是什么?

标签: python arrays numpy pandas


【解决方案1】:

你应该在赋值时设置数组的dtype

l = [pd.Series([1,2,3]),pd.Series([4,5,6])]
np.array(l, dtype=pd.Series)

虽然它提出了一个问题:为什么你想要一个系列的 ndarray,而不是系列内容的 ndarray?

【讨论】:

  • 非常感谢!稍后我需要在其中一些系列上使用 rolling_moment 函数,据我所知,它只存在于 Pandas 中。
  • 不要谢我太快!在第二次检查时,它可能不起作用。但在这种情况下,您可能只想将系列对象保留在 python 列表中。
  • 嗯..感谢您的尝试,但它确实不起作用。不幸的是,我真的需要一个 np.array
  • 如果目标是转换为 Numpy 数组表示,您可以看到 pandas.Series.as_matrixpandas.DataFrame.values
猜你喜欢
  • 2021-01-03
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 2014-04-28
  • 2014-11-15
相关资源
最近更新 更多