2017-09-26 1 views
1

팬더 시리즈를 가지고 있으며 평균값을 얻을 수 있습니다.팬더 함수 변환 문자열

>>> s = pd.Series(np.random.randn(5)) 
    >>> s 
    0 -0.426981 
    1 1.322446 
    2 -1.505474 
    3 0.411286 
    4 0.431440 
    dtype: float64 
    >>> s.mean() 
    0.046543382190213201 
    >>> s.max() 
    1.3224457683044697 

그러나 아래의 dict에 주어진 조작/기능 기반 키를 선택해야합니다.

>>> pfync = {'average': 'mean()', 'maximin': 'max()', 'minimum': 'min()', 'Standard deviation': 'std()'} 
    >>> opType=pfync['average'] 
    >>> opType 
    'mean()' 
    >>> 

변수 opType에 따라 계열의 평균/최대 값 등을 어떻게 얻을 수 있습니까? 나는 내 프로그램에있는 다른 많은 것들을 피하고 싶다. 도와주세요 . 당신이 당신의 사전을 조금을 변경하는 경우 당신은 당신이 사전을 단순히 괄호를 벗겨 변경할 수없는 경우

답변

1

, 당신은 pd.Series.agg

pfync = { 
    'average': 'mean', 
    'maximin': 'max', 
    'minimum': 'min', 
    'Standard deviation': 'std' 
} 

s.agg(pfync['average']) 

0.046543382190213201 

를 사용할 수 있습니다. 이전 0.20에 판다 이전 버전


s.agg(pfync['average'].strip('()')) 

0.046543382190213201 
, 당신은 또한 당신이 찾고있는 값을 얻기 위해 평가 사용할 수 __getattr__

s.__getattr__(pfync['average'])() 
+0

dict. 이 오류가 발생합니다. AttributeError : 'Series'객체에 'agg'속성이 없습니다. pd 버전 = 0.19.2 –

+0

내 게시물을 업데이트했습니다. 그게 작동하는지 알려주세요. – piRSquared

0

를 사용할 수 있습니다. 유스 케이스가 정확히 무엇인지 모르므로 값을 출력하고 있습니다.

import numpy as np 
import pandas as pd 

pfync = { 
    'average': 'mean()', 
    'maximin': 'max()', 
    'minimum': 'min()', 
    'Standard deviation': 'std()' 
} 

s = pd.Series(np.random.randn(5)) 

for k, v in pfync.iteritems(): 
    print v 
    print eval('s.'+v), '\n'