为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas GroupBy - 仅显示具有多个唯一特征值的组

Pandas GroupBy - 仅显示具有多个唯一特征值的组

MYYA 2021-09-28 21:04:53
我有一个df_things看起来像这样的 DataFrame ,我想在训练之前预测分类的质量A    B     C      CLASS-----------------------al1  bal1  cal1   Shipal1  bal1  cal1   Shipal1  bal2  cal2   Shipal2  bal2  cal2   Cowal3  bal3  cal3   Caral1  bal2  cal3   Caral3  bal3  cal3   Car我想按类对行进行分组,以便了解特征的分布。我这样做(例如,在 col "B" 上),df_B = df_things.groupby('CLASS').B.value_counts()这给了我结果CLASS  B -------------ship   bal1  2        bal2  1cow    bal2  2car    bal2  1       bal3  2我想要的是仅可视化具有多个值的组,使其看起来像这样:CLASS  B -------------ship   bal1  2        bal2  1car    bal2  1       bal3  2我有点卡住了,所以有什么想法吗?
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

您可以使用groupby过滤nunique计数超过 1 的组。


v = df_things.groupby('CLASS').B.value_counts()

v[v.groupby(level=0).transform('nunique').gt(1)]


CLASS  B   

Car    bal3    2

       bal2    1

Ship   bal1    2

       bal2    1

Name: B, dtype: int64


查看完整回答
反对 回复 2021-09-28
?
萧十郎

TA贡献1815条经验 获得超13个赞

解决方案来自 crosstab


s=pd.crosstab(df.CLASS,df.B)

s[s.ne(0).sum(1)>1].replace(0,np.nan).stack()

CLASS  B   

Car    bal2    1.0

       bal3    2.0

Ship   bal1    2.0

       bal2    1.0

dtype: float64


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信