相关疑难解决方法(0)

Pandas:当列包含numpy数组时聚合

我正在使用一个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)

但是,如果我有一个使用数字而不是数组数据的列,它可以正常工作.我可以解决这个问题,但这很令人困惑,我想知道这是一个错误,还是我做错了什么.我觉得在这里使用数组可能有点边缘,确实不确定它们是否得到支持.想法?

谢谢

python numpy aggregation pandas

8
推荐指数
1
解决办法
5749
查看次数

标签 统计

aggregation ×1

numpy ×1

pandas ×1

python ×1