df.mean()을 사용할 때 각 열의 평균값이 주어지는 결과를 얻습니다. 이제 첫 번째 열의 평균과 두 번째 열의 합을 원한다고 가정 해 봅시다. 이것을 할 수있는 방법이 있습니까? 데이터 프레임을 분해하고 재구성해야 할 필요가 없습니다.팬더 : 다른 열에 다른 함수 적용
내 초기 아이디어는 그래서 같은 pandas.groupby.agg의 선()을 따라 뭔가 할 것이었다 :
df = pd.DataFrame(np.random.random((10,2)), columns=['A','B'])
df.apply({'A':np.mean, 'B':np.sum}, axis=0)
Traceback (most recent call last):
File "<ipython-input-81-265d3e797682>", line 1, in <module>
df.apply({'A':np.mean, 'B':np.sum}, axis=0)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3471, in apply
return self._apply_standard(f, axis, reduce=reduce)
File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3560, in _apply_standard
results[i] = func(v)
TypeError: ("'dict' object is not callable", u'occurred at index A')
을하지만 분명이 작동하지 않습니다. dict을 전달하는 것이 직관적 인 방법 일 것 같지만 또 다른 방법이 있습니다 (다시 DataFrame을 분해하고 다시 어셈블하지 않고)?
당신은 폐쇄를 시도 할 수 있습니다
실제로는 꽤 좋습니다. 내 해결 방법은 하나의 열을 데이터 프레임에 삽입하고 해당 열에서 groupby를 수행 한 다음 집계 메서드에 dict를 전달하는 것이 었습니다. – pbreach
감사합니다. 함수 dict에있는 키보다 DataFrame에 더 많은 열이있는 경우이 오류가 발생합니다. @ bill-letson도 그렇게 보았습니까? –
전체 구현에는 ID 함수를 반환하는 try KeyError 절이 포함되어야합니다. lambda x : x –