熊猫群独特的问题

时间:2018-02-09 01:27:36

标签: python pandas

我有一个数据框' region_group'。如下所示,此数据框没有' ARTHOG'城镇/城市的价值'柱。但是,当我按照第一组进行分组时,在此列上会重新显示此值。我正在尝试理解为什么会发生这种情况。

注意:region_group数据框基于另一个具有“ARTHOG'作为“城镇/城市”中的价值柱。但它已被滤除了如下所示的条件,并且在Out [25]

中也很明显
kqueue

enter image description here

3 个答案:

答案 0 :(得分:1)

类别数据将带有类别,当没有值时,仍会保留类别但填写值为NaN

df=pd.DataFrame({'A':[1,1,3,4,5],'B':[1,2,2,2,2]})
df.A=df.A.astype('category',categories=[1,2,3,4,5])

df.groupby('A').B.first()
Out[905]: 
A
1    1.0
2    NaN
3    2.0
4    2.0
5    2.0
Name: B, dtype: float64

解决方案,将其转换回str或数字

df.A=df.A.astype(int)
df.groupby('A').B.first()
Out[907]: 
A
1    1
3    2
4    2
5    2
Name: B, dtype: int64

或者我们正在使用remove_unused_categories

df.A=df.A.cat.remove_unused_categories()
df.groupby('A').B.first()
Out[910]: 
A
1    1
3    2
4    2
5    2
Name: B, dtype: int64

答案 1 :(得分:0)

Pandas使用groupby操作中所有分类列的乘积来确定输出的索引。这意味着即使某个类别未在基础数据中表示,也会在groupby结果中表示。

在我的问题中可以找到有关此行为的详细信息以及可能的解决方案: Pandas groupby with categories

pandas开发团队taken the stance所有类别组合必须在分类系列的groupby操作中表示。

答案 2 :(得分:0)

由于Pandas为0.23.0,groupby方法现在可以采用参数"观察"如果将此问题设置为True(默认情况下为False),则会修复此问题。