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

问题描述 投票:0回答:2

我有一只像熊猫一样的熊猫

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()但到目前为止没有任何工作谢谢!

python pandas dataframe pandas-groupby
2个回答
1
投票

一种方法可能是

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

0
投票

使用带有布尔掩码的GroupBy.mean,其中Trues是像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
© www.soinside.com 2019 - 2024. All rights reserved.