麻烦多个"groupby"与变量和类别(分类数据)

Joh*_*ohn 3 python group-by pandas

df.dtypes

Close       float64
eqId          int64
date         object
IntDate       int64
expiry        int64
delta         int64
ivMid       float64
conf        float64
Skew        float64
psc         float64
vol_B      category
dtype: object

gb = df.groupby([df['vol_B'],df['expiry']])

gb.describe()
Run Code Online (Sandbox Code Playgroud)

我得到一个很长的错误消息,最后一行是

AttributeError: 'Categorical' object has no attribute 'flags'
Run Code Online (Sandbox Code Playgroud)

当我groupby分别对它们中的每一个执行时,它们各自(独立地)工作得很好,我只是不能执行多个groupby,其中一个变量是"bin".

此外,当我使用其他2个变量时,我能够执行多次groupby&ndash,我成功执行了此操作:

gb = df.groupby([df['delta'],df['expiry']])
Run Code Online (Sandbox Code Playgroud)

kry*_*o07 7

我正面临着与OP类似的问题,并在寻找解决方案时发现了这个问题.在通过分类变量的pandas 文档之后,对我有用的一个简单的hack是在分组之前更改分类变量的类型.

由于vol_B是您的分类变量,因此您应该尝试以下操作

#Depending on the content of vol_B you can do astype(int) or astype(float) as well.
gb = df.groupby([df['vol_B'].astype(str), df['expiry']])
Run Code Online (Sandbox Code Playgroud)

我没有详细说明为什么这样有效,但事实并非如此,但如果我进入它,我会更新答案.