﻿ Pandas: Split the specified dataframe into groups based on all columns and calculate Groupby value counts on the dataframe - w3resource # Pandas: Split the specified dataframe into groups based on all columns and calculate Groupby value counts on the dataframe

## Pandas Grouping and Aggregating: Split-Apply-Combine Exercise-14 with Solution

Write a Pandas program to split the following dataframe into groups based on all columns and calculate GroupBy value counts on the dataframe.

Test Data:

```   id  type     book
0   1    10     Math
1   2    15  English
2   1    11  Physics
3   1    20     Math
4   2    21  English
5   1    12  Physics
6   2    14  English
```

Sample Solution:

Python Code :

``````import pandas as pd
df = pd.DataFrame( {'id' : [1, 2, 1, 1, 2, 1, 2],
'type' : [10, 15, 11, 20, 21, 12, 14],
'book' : ['Math','English','Physics','Math','English','Physics','English']})

print("Original DataFrame:")
print(df)
result = df.groupby(['id', 'type', 'book']).size().unstack(fill_value=0)
print("\nResult:")
print(result)
``````

Sample Output:

```Original DataFrame:
id  type     book
0   1    10     Math
1   2    15  English
2   1    11  Physics
3   1    20     Math
4   2    21  English
5   1    12  Physics
6   2    14  English

Result:
book     English  Math  Physics
id type
1  10          0     1        0
11          0     0        1
12          0     0        1
20          0     1        0
2  14          1     0        0
15          1     0        0
21          1     0        0
```

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz

﻿

## Python: Tips of the Day

Negative Indexing:

In Python you can use negative indexing. While positive index starts with 0, negative index starts with -1.

```name="Welcome"
print(name)
print(name[-1])
print(name[0:3])
print(name[-1:-4:-1])

```

Output:

```W
e
Wel
emo```