【问题标题】:Multidimensional numpy.ndarray from multi-indexed pandas.DataFrame来自多索引 pandas.DataFrame 的多维 numpy.ndarray
【发布时间】:2020-05-13 02:42:53
【问题描述】:

我想从多索引 pandas.DataFrame 生成一个 3 维 numpy.ndarray。更准确地说,假设我有:

df = pd.DataFrame([[1, '1' , 1, 10], [1, '2', 2, 20], [2, '1', 5, 30]], columns=['x', 'y', 'z', 't'])
df = df.set_index(['x','y'])
df

这给了我

        z  t
  x  y
  1  1  1 10
     2  2 20
  2  1  5 30

我想写一个函数,用上面的参数返回numpy.ndarray

  [[[1, 10],
    [2, 20]],
   [[5, 30],
    [NaN, NaN]]]

Pandas 多索引看起来像是多维数组的替代品,但它不提供(或至少不记录)来回的方式...

谢谢。

【问题讨论】:

  • df.unstack().stack(dropna=False).to_numpy()
  • 谢谢,但这不起作用:这将返回一个二维数组。

标签: python pandas numpy dataframe multidimensional-array


【解决方案1】:

用途:

df.to_xarray().to_array().values.transpose(1,2,0)

>>[[[ 1. 10.]
  [ 2. 20.]]

 [[ 5. 30.]
  [nan nan]]]

【讨论】:

  • 谢谢!那么 xarray 是 numpy 和 pandas 之上的又一个库,它必须修补 pandas 的不足之处? PS:当我有足够的声誉时,我会支持你的答案。
  • 是的,这是一种不同的数据结构。更多信息here
  • 注意transpose 只是为了按照您指定的顺序获取值。
猜你喜欢
  • 2014-10-01
  • 2019-06-30
  • 2013-06-30
  • 1970-01-01
  • 2014-08-11
  • 2020-07-06
  • 2017-11-17
  • 1970-01-01
  • 2011-03-19
相关资源
最近更新 更多