이 문서 는 출력 열 이름을 키로 사용하는 dict를 사용하여 한 번에 groupby 객체에 여러 기능을 적용하는 방법을 보여줍니다.
In [563]: grouped['D'].agg({'result1' : np.sum,
.....: 'result2' : np.mean})
.....:
Out[563]:
result2 result1
A
bar -0.579846 -1.739537
foo -0.280588 -1.402938
그러나 이것은 Series groupby 객체에서만 작동합니다. 또한 dict이 DataFrame에 의해 그룹으로 유사하게 전달되면 키가 함수가 적용되는 열 이름이 될 것으로 예상합니다.
내가하고 싶은 것은 여러 열에 여러 기능을 적용하는 것입니다 (그러나 특정 열은 여러 번 운영됩니다). 또한 일부 함수는 sumby 함수와 같은 groupby 객체의 다른 열에 따라 다릅니다 . 내 현재 솔루션은 열별로 이동하고 다른 행에 의존하는 함수에 람다를 사용하여 위의 코드와 같은 작업을 수행하는 것입니다. 그러나 이것은 오랜 시간이 걸립니다 (그룹 별 객체를 반복하는 데 시간이 오래 걸린다고 생각합니다). 한 번의 실행으로 전체 그룹 별 객체를 반복하도록 변경해야하지만 팬더에이를 깨끗하게 수행하는 방법이 내장되어 있는지 궁금합니다.
예를 들어, 나는 다음과 같은 것을 시도했다.
grouped.agg({'C_sum' : lambda x: x['C'].sum(),
'C_std': lambda x: x['C'].std(),
'D_sum' : lambda x: x['D'].sum()},
'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), ...)
그러나 예상대로 KeyError가 발생합니다 ( agg
DataFrame에서 호출 되면 키가 열 이어야하기 때문에).
내가하고 싶은 일을 수행하는 방법이 있거나이 기능이 추가 될 가능성이 있습니까? 아니면 그룹별로 수동으로 반복해야합니까?
감사