首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas groupby独刊

Pandas groupby独刊
EN

Stack Overflow用户
提问于 2018-02-09 09:27:36
回答 3查看 384关注 0票数 1

我有一个数据帧'region_group‘。如下所示,此数据帧在“城镇/城市”列中没有“ARTHOG”值。但是,当我在此列上执行groupby优先时,此值将弹出。我正在试图理解为什么会发生这种情况。

注意: region_group数据帧基于另一个数据帧,该数据帧在“城镇/城市”列中的值为“ARTHOG”。但是它已经被where条件过滤掉了,如下所示,在Out25中也很明显

代码语言:javascript
复制
region=k[['my_ID','Town/City','District','County','month','year']]
region=region.loc[(region['month'] == 12) & (region['year'] == 2016)]
region_noid=region.drop(['my_ID','month','year'], axis=1)

region_group=region_noid.groupby(['Town/City','District','County']).size().reset_index(name='Count')

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-09 09:43:01

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

关于这一点的细节,以及可能的解决方案,可以在我质疑这种行为的目的的问题中找到:Pandas groupby with categories

pandas开发团队有一个taken the stance,即类别的所有组合必须在类别序列的groupby操作中表示。

票数 0
EN

Stack Overflow用户

发布于 2018-02-09 09:45:07

类别数据将对类别进行带入,当没有值时,仍然保留类别但填充值为NaN

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-05-29 16:27:41

从Pandas 0.23.0开始,groupby方法现在可以接受参数"observed“,如果该参数设置为True (默认情况下为False),则可以修复此问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48697412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档