熊猫groupby和countif在多列中

基督教

我有以下df

import pandas as pd
# -- create a dataframe 
list_columns = ['pet', 'grade', 'class']
list_data = [
    ['dog', 'A', 'A'],
    ['cat', 'A', 'C'],
    ['dog', 'B', 'E'],
    ['mouse', 'C', 'A'],
    ['dog', 'A', 'B'],
    ['cat', 'B', 'E'],
    ['dog', 'C', 'D'],
    ['dog', 'A', 'C'],
    ]
df_animals = pd.DataFrame(columns=list_columns, data=list_data)
df_animals.head()

我想让每只宠物计算出'A','B','C','D','E'该栏中有多少,其中grade多少class

预期输出为

pet    status   grade   class
dog      A      3       1
dog      B      1       1
dog      C      0       1
dog      D      0       0
dog      E      0       1
cat      A      1       0
cat      B      0       0
cat      C      0       1
cat      D      0       0
cat      E      0       0
mouse    A      0       1
mouse    B      0       0
mouse    C      1       0
mouse    D      0       0
mouse    E      0       0

我试图按特定项目进行分组和计数,但是不起作用。一个想法是为每只宠物计算A,B,C,D,E,但这是手工的,并不认为可以。有人可以告诉我该如何进行吗?

df_animals.groupby('grade').apply(lambda x: (x=='A').count())
耶斯列尔

使用DataFrame.meltDataFrame.pivot_table用于整形,然后加入由缺失类别DataFrame.reindexMultiIndex.from_product

df = (df_animals.melt('pet')
               .pivot_table(index=['pet','value'],
                            columns='variable', 
                            aggfunc='size', 
                            fill_value=0)
               .rename_axis(None, axis=1))
df = df.reindex(pd.MultiIndex.from_product(df.index.levels), fill_value=0).reset_index()
print (df)
      pet value  class  grade
0     cat     A      0      1
1     cat     B      0      1
2     cat     C      1      0
3     cat     D      0      0
4     cat     E      1      0
5     dog     A      1      3
6     dog     B      1      1
7     dog     C      1      1
8     dog     D      1      0
9     dog     E      1      0
10  mouse     A      1      0
11  mouse     B      0      0
12  mouse     C      0      1
13  mouse     D      0      0
14  mouse     E      0      0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章