PandasGroupBy只显示具有多个独特功能的组值

2024-09-30 01:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想按类对行进行分组,以便了解特性的分布。我是这样做的(例如,在列“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

我有点困了,有什么想法吗?你知道吗


Tags: dfcarclassthingsshipal1cal1cal2
2条回答

来自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

您可以使用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

相关问题 更多 >

    热门问题