【发布时间】:2013-12-03 08:13:15
【问题描述】:
我有以下问题,我设法在某些列上创建了一个带有对象 dtypes 的数据框。 特别是这些将是 2d numpy 数组,但它们可以是任何非数字类型。现在我想旋转我的数据框。有没有办法传递我选择的适用于这些对象的聚合函数?我似乎无法做到这一点,我得到了错误:
GroupByError:没有要聚合的数字类型
例如,假设我有这个虚拟数据框:
date foo bar mat
1 a x [[1, 2], [3, 4]]
1 b x [[1, 2], [3, 4]]
1 a y [[1, 2], [3, 4]]
1 b y [[1, 2], [3, 4]]
2 a x [[4, 5], [6, 7]]
2 b x [[4, 5], [6, 7]]
2 a y [[4, 5], [6, 7]]
2 b y [[4, 5], [6, 7]]
我想要一个新的数据框类型:
dd.pivot_table(values=['mat'], rows=['date'], cols=['foo'], aggfunc= ??)
我的二维数组将是 'foo' 列中具有相同值的数组的逐个元素总和。我怎样才能做到这一点?如果不可能,是否可以在具有相同“foo”的数组列表中选择第一次出现的“mat”元素? 谢谢
添加了所需的输出:
date a b
1 [[2, 4], [6, 8]] [[8, 10], [12, 14]]
2 [[2, 4], [6, 8]] [[8, 10], [12, 14]]
【问题讨论】:
-
请添加示例输出
-
好吧,我得到一个错误,所以输出会是这样的: raise GroupByError('No numeric types to aggregate') GroupByError: No numeric types to aggregate
-
我的意思是你想得到什么作为输出,结果 DataFrame
-
知道了,它就在那里,基本上是对二维数组求和,但实际上它可以是任何聚合函数
-
这不是一种非常有效的数据表示。查看多索引,请参阅:pandas.pydata.org/pandas-docs/dev/…,或将“mat”数据放在单独的数据框中。
标签: python arrays numpy pandas aggregate