Groupby for each class

Viewed 26

Consider a table:

Attribute1 ... Class
A ... 1
B ... 0
B ... 1
C ... 0

I want to do a groupby of Attribute 1 for each class, something like:

Attribute Class 1 Class 0
A 1 0
B 1 1
C 0 1

I tried pivoting but I receive the ValueError: Grouper for 'class' not 1-dimensional error.

1 Answers

If your dataframe is:

  Attribute1  Class
0          A      1
1          B      0
2          B      1
3          C      0

Then you can do:

print(
    pd.pivot_table(df, index="Attribute1", columns="Class", aggfunc="size")
    .fillna(0)
    .astype(int)
    .add_prefix("Class ")
)

Prints:

Class       Class 0  Class 1
Attribute1                  
A                 0        1
B                 1        1
C                 1        0
Related