2012-06-21 2 views
1

아래에 언급 된 코드가 작동하는 것 같습니다. 정렬 된 그룹에서 tail 함수를 호출하면 그룹의 마지막 n 행을 나에게 줄 수 있습니다. 이것은 그룹에 대한 꼬리 기능의 문서화 된 동작입니까? 팬더 문서에는 언급되지 않았으므로 다음 버전에서는이 동작이 변경 될 수 있다고 걱정됩니다. 또한 다음과 같은 다른 방법이 있습니다. Apply 함수를 사용하면 큰 데이터 집합의 경우 매우 느립니다. 팬더 버전은 0.7.3팬더 사용하기 그룹의 마지막 두 행의 평균을 얻는 방법

df1=pds.DataFrame({'A' : ['CU','CU','CU','CU','CU','AU','AU','AU','AU','AU'],'B':[1,2,3,4,5,1,2,3,4,5]}).sort(['A']).reset_index().drop(['index'],axis=1) 
df2=df1.groupby(['A']) 
df3=df2.tail(2).groupby(['A']) 
df3.mean() 

답변

2

문서 does mention head/tail을에 사용됩니다.

그리고 당신의 코드에 대한

, pivot_table 사용

a = pds.DataFrame({'A' : ['CU','CU','CU','CU','CU','AU','AU','AU','AU','AU'], 
        'B':[1,2,3,4,5,1,2,3,4,5]}).sort(['A']) 

a.pivot_table(rows='A', values='B', aggfunc=lambda x: x.tail(2).mean()) 

반환

AU 4.5 
CU 4.5 
+0

을 문서입니다 만 시리즈 또는 DataFrame 위해 꼬리를 사용하여 각 그룹에 적용 할 때 꼬리 기능 경우 언급하지 않습니다에 대한 각 그룹의 마지막 n 행을 반환합니다. – user1472282

+0

여기 키는 "분할 적용 적용"패러다임을 사용하는 것입니다. 그룹 별 작업을 수행하는 것은 해당 작업을 수행 할 함수를 작성하는 것과 동일합니다. 전체 DataFrame, 그룹과 함께 사용 @eumiro가 표시 한대로 by.apply 또는 pivot_table –

관련 문제