首页 文章

大熊猫 - 分类变量的百分比计数

提问于
浏览
0

我有一只大熊猫喜欢

df_test = pd.DataFrame({'A': 'a a a b b'.split(), 'B': ['Y','N','Y','Y','N']})

我想要的输出是 df_test2 = pd.DataFrame({'A': 'a b'.split(), 'B': [2/3,1/2]}) 你如何做一个groupby() . 按A列应用以获得B列中'Y'的百分比?

我一直在搜索groupby.apply()但到目前为止没有任何工作谢谢!

2 回答

  • 0

    一种方法可能是

    In [10]: df_test.groupby('A').B.apply(lambda x: (x == 'Y').mean())
    Out[10]:
    A
    a    0.666667
    b    0.500000
    

    或者,如果您不介意在此过程中更改 df_test

    In [15]: df_test['C'] = df_test.B == 'Y'
    In [17]: df_test.groupby('A').C.mean()
    Out[17]:
    A
    a    0.666667
    b    0.500000
    Name: C, dtype: float64
    
  • 1

    使用带有布尔掩码的GroupBy.mean,其中 True 是像 1 这样的进程,不需要新列,因为也是 Series df_test["A"]groupby

    注意:

    相反, == 用于eq以获得更清晰的语法 .

    df = df_test["B"].eq('Y').groupby(df_test["A"]).mean().reset_index()
    print (df)
       A         B
    0  a  0.666667
    1  b  0.500000
    

相关问题