Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
3 views
in Data Science by (17.6k points)

Is there an easy method in pandas to invoke groupby on a range of values increments? For instance given the example below can I bin and group column B with a 0.155 increment so that for example, the first couple of groups in column B are divided into ranges between '0 - 0.155, 0.155 - 0.31 ...`

import numpy as np

import pandas as pd

df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)})

     A         B

0  0.383493  0.250785

1  0.572949  0.139555

2  0.652391  0.401983

3  0.214145  0.696935

4  0.848551  0.516692

Alternatively I could first categorize the data by those increments into a new column and subsequently use groupby to determine any relevant statistics that may be applicable in column A?

1 Answer

0 votes
by (41.4k points)

Using pd.cut that segment and sort data values into bins:

>>> df.groupby(pd.cut(df["B"], np.arange(0, 1.0+0.155, 0.155))).sum()

                      A         B

B                                

(0, 0.155]     2.775458  0.246394

(0.155, 0.31]  1.123989  0.471618

(0.31, 0.465]  2.051814  1.882763

(0.465, 0.62]  2.277960  1.528492

(0.62, 0.775]  1.577419  2.810723

(0.775, 0.93]  0.535100  1.694955

(0.93, 1.085]       NaN       NaN

[7 rows x 2 columns]

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...