我正在使用 pandas DataFrame,其中一列包含 numpy 数组。当尝试通过聚合对该列求和时,我收到一条错误消息,指出“必须产生聚合值”。
例如
import pandas as pd
import numpy as np
DF = pd.DataFrame([[1,np.array([10,20,30])],
[1,np.array([40,50,60])],
[2,np.array([20,30,40])],], columns=['category','arraydata'])
这按我期望的方式工作:
DF.groupby('category').agg(sum)
输出:
arraydata
category 1 [50 70 90]
2 [20 30 40]
但是,由于我的真实数据框有多个数值列,因此未选择 arraydata 作为聚合的默认列,我必须手动选择它。这是我尝试过的一种方法:
g=DF.groupby('category')
g.agg({'arraydata':sum})
这是另一个:
g=DF.groupby('category')
g['arraydata'].agg(sum)
两者都给出相同的输出:
Exception: must produce aggregated value
但是,如果我有一个使用数字而不是数组数据的列,它就可以正常工作。我可以解决这个问题,但这很令人困惑,我想知道这是否是一个错误,或者我做错了什么。我觉得在这里使用数组可能有点边缘情况,并且确实不确定它们是否受支持。想法?
谢谢