팬더

2014-07-15 14 views
0

내가 3 개 그룹이팬더

grouped = df.groupby('name') 
for k,group in grouped:  
    print group 

객체 GROUPBY이 , foo는는 foobar

name time 
2 bar  5 
3 bar  6 


    name time 
0 foo  5 
1 foo  2 

    name  time 
4 foobar  20 
5 foobar  1 

나는이 그룹을 필터링해야하고 5보다 큰 시간이없는 모든 그룹을 삭제하십시오. 예에서 그룹 foo는 삭제해야합니다. 나는 기능을 필터()

grouped.filter(lambda x: (x.max()['time']>5)) 

그것을 할 것을 시도하고 있지만, X는 분명히 dataframe 형식뿐만 아니라 그룹입니다. 제대로 x 실제로 모든 인덱스 name 열 경기에 대한 DataFrame입니다 발견으로

grouped.filter(lambda x: (x.time > 5).any()) 

:

답변

1

과 유사한 무언가를, >20보다는 >5가 있어야 정말 코드의 최종 라인을 것입니다 가정 for 루프에 k에있는 키입니다.

그래서 시간대에 5보다 큰 시간이 있으면 위에 나온 (x.time > 5).any()을 테스트하여이를 기준으로 필터링하려고합니다.

+0

결과가 데이터 프레임이므로 groupby ('name')를 다시해야합니다. 맞습니까? grouped.filter (lambda x : (x.time> 5) .any()). groupby ('name') – Meloun