我正在使用一个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'])
Run Code Online (Sandbox Code Playgroud)
这按照我期望的方式工作:
DF.groupby('category').agg(sum)
Run Code Online (Sandbox Code Playgroud)
输出:
arraydata
category 1 [50 70 90]
2 [20 30 40]
Run Code Online (Sandbox Code Playgroud)
但是,由于我的实际数据框有多个数字列,因此不选择arraydata作为聚合的默认列,我必须手动选择它.这是我尝试过的一种方法:
g=DF.groupby('category')
g.agg({'arraydata':sum})
Run Code Online (Sandbox Code Playgroud)
这是另一个:
g=DF.groupby('category')
g['arraydata'].agg(sum)
Run Code Online (Sandbox Code Playgroud)
两者都给出相同的输出:
Exception: must produce aggregated value
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个使用数字而不是数组数据的列,它可以正常工作.我可以解决这个问题,但这很令人困惑,我想知道这是一个错误,还是我做错了什么.我觉得在这里使用数组可能有点边缘,确实不确定它们是否得到支持.想法?
谢谢