Python Pandas groupby:应用vs聚合缺少的类别
我遇到了一个问题,当分类数据缺少值时,panda的Python Pandas groupby:应用vs聚合缺少的类别,python,pandas,Python,Pandas,我遇到了一个问题,当分类数据缺少值时,panda的GroupBy.apply和GroupBy.aggregate会给出不同的结果聚合保留所有“已知”类别,但应用仅保留数据中存在的类别 下面是一个简化的示例: 将熊猫作为pd导入 将numpy作为np导入 #`missing`有'b'类,但没有数据使用它。 missing=pd.Category(列表('aaa'),类别=['a','b'])) 稠密=pd.分类(列表('abc')) 值=np.arange(len(稠密)) df=pd.DataF
GroupBy.apply
和GroupBy.aggregate
会给出不同的结果<代码>聚合保留所有“已知”类别,但应用
仅保留数据中存在的类别
下面是一个简化的示例:
将熊猫作为pd导入
将numpy作为np导入
#`missing`有'b'类,但没有数据使用它。
missing=pd.Category(列表('aaa'),类别=['a','b']))
稠密=pd.分类(列表('abc'))
值=np.arange(len(稠密))
df=pd.DataFrame({'missing':missing'dense':dense'values':values})
grouped=df.groupby(['missing','dense']))
打印分组。平均值()
打印分组聚合(np.平均值)
打印分组。应用(lambda块:np.mean(块))
哪张照片
values
missing dense
a a 0
b 1
c 2
b a NaN
b NaN
c NaN
values
missing dense
a a 0
b 1
c 2
b a NaN
b NaN
c NaN
values
missing dense
a a 0
b 1
c 2
请注意,最后一个数据帧缺少NaN
行,其中missing=b
。我理解为什么apply
可能会这样做(它选择不将一组NaN
s传递给缩减函数)。上面的代码片段只是一个玩具示例:我实际上需要使用apply
来获得我想要的结果
问题:使用
应用
但创建与聚合
返回的形状匹配的输出形状的最佳方法是什么?这需要一个增强拉动请求来完成,请参阅
一般来说,您应该使用simply use
.mean()
作为惯用的方法来实现这一点(而且要快得多)。是的,但我实际上对计算平均值不感兴趣。您的建议(在链接的github问题中)使用grouped.\u reindex\u output
内部似乎给出了所需的输出。(我想在GroupBy
对象之外使用有点不安全,但我要留下一个注释;)。谢谢