Pandas Groupby 값 범위


92

pandas에서 groupby값 증가 범위 를 호출하는 쉬운 방법이 있습니까? 예를 들어 아래 예제에서 열 B을 비닝하고 그룹화 할 수 있습니다. 예를 들어 열의 0.155처음 두 그룹 B은 '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

또는 먼저 해당 증분에 따라 데이터를 새 열로 분류 한 다음 groupby열에 적용 할 수있는 관련 통계를 결정하는 데 사용할 수 A있습니까?

답변:


132

다음에 관심이있을 수 있습니다 pd.cut.

>>> 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]

11
여러 차원에서이 작업을 수행 할 수 있습니까? 본질적으로 두 값을 동시에 그룹화합니까?
madsthaks

13

이 시도:

df = df.sort('B')
bins =  np.arange(0,1.0,0.155)
ind = np.digitize(df['B'],bins)

print df.groupby(ind).head()

물론 그룹에서뿐만 아니라 모든 기능을 사용할 수 있습니다 head.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.