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

我有一个df_things看起来像这样的 DataFrame ,我想在训练之前预测分类的质量


A    B     C      CLASS

-----------------------

al1  bal1  cal1   Ship

al1  bal1  cal1   Ship

al1  bal2  cal2   Ship

al2  bal2  cal2   Cow

al3  bal3  cal3   Car

al1  bal2  cal3   Car

al3  bal3  cal3   Car

我想按类对行进行分组,以便了解特征的分布。我这样做(例如,在 col "B" 上),


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

这给了我结果


CLASS  B 

-------------

ship   bal1  2 

       bal2  1

cow    bal2  2

car    bal2  1

       bal3  2

我想要的是仅可视化具有多个值的组,使其看起来像这样:


CLASS  B 

-------------

ship   bal1  2 

       bal2  1

car    bal2  1

       bal3  2

我有点卡住了,所以有什么想法吗?


MYYA
浏览 205回答 2
2回答

MMTTMM

您可以使用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    1Ship   bal1    2       bal2    1Name: B, dtype: int64

萧十郎

解决方案来自 crosstabs=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.0Ship   bal1    2.0       bal2    1.0dtype: float64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python