【问题标题】:How to convert grouped/binned dataframe to numpy array?如何将分组/合并的数据框转换为 numpy 数组?
【发布时间】:2014-06-12 17:55:59
【问题描述】:

我想知道如何将分箱数据帧转换为可在 sklearn 的 PCA 中使用的分箱 numpy 数组。

这是我目前的代码(x 是我原始的未分箱数据框):

bins=(2,6,10,14,20,26,32,38,44,50,56,62,68,74,80,86,92,98)
binned_data = x.groupby(pd.cut(x.Weight, bins))

我想将 binned_data 转换为 numpy 数组。提前致谢。

编辑:

当我尝试 binned_data.values 时,我收到此错误:

AttributeError: Cannot access attribute 'values' of 'DataFrameGroupBy' objects, try using the 'apply' method

【问题讨论】:

  • binned_data.values吗?
  • 不,我试过了,收到了这个:AttributeError: Cannot access attribute 'values' of 'DataFrameGroupBy' objects, try using the 'apply' method
  • 请添加x的简短描述或一些代码来生成它。

标签: python arrays numpy pandas dataframe


【解决方案1】:

您需要对 GroupBy 对象应用某种聚合以返回 DataFrame。一旦你有了它,你可以使用.values 来提取 numpy 数组。

例如,如果您想要每个 bin 中数据的总和或计数,您可以这样做:

binned_data.sum().values
binned_data.size().values

编辑: 我的代码并不完全正确,因为列(重量)和索引将具有相同的名称。可以通过重命名索引来修复,如下:

binned_data = x.groupby(pd.cut(x.Weight, bins)).sum()
binned_data.index.name = 'Weight_Bin'
binned_data.reset_index().values

【讨论】:

  • 输入:data = binned_data.sum().reset_index().values 然后我得到输出:ValueError: cannot insert Weight, already exists。您认为是什么原因造成的?
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 2021-02-10
  • 2014-03-23
  • 2017-11-09
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多