2013-02-27 2 views
0

우리는 두 개의 시리즈 s1s2을 가지고 있는데, 이들에 산술 연산을 적용 할 수 있습니다 : s1 + s2 또는 s1*s2. 산술 연산은 새로운 시리즈를 얻은 결과 쌍으로 적용됩니다 (두 시리즈가 같은 길이라고 가정). 이 기능을 사용하면 훨씬 쉽게 작업 할 수 있습니다.팬더 시리즈에 사용자 정의 함수를 적용 할 수 있습니까?

는 지금, 나는 내 자신의 연산자를 정의하고이 시리즈에 적용하려고 :

def f(x1, x2): 
    if x2 > 0: 
     return x1/x2 
    else: 
     return 1000.0 

을 그리고 나는이 시리즈에 적용하려고 : f(s1,s2). 작동하지 않습니다. 사용자 정의 함수는 계열을 처리하는 방법을 모르기 때문에 어느 정도 예상 할 수 있습니다. 그래서, 제 질문은 제가하고 싶은 일을하는 우아한 방법이 있다면?

+0

이 오류가 발생하는 이유는 'x2> 0'이 (가) True/False가 아니기 때문에 시리즈이기 때문입니다. – Zelazny7

답변

2
In [12]: s1 = pd.Series(np.random.randint(-10, 10, 5)) 

In [13]: s2 = pd.Series(np.random.randint(-10, 10, 5)) 

In [14]: s1.combine(s2, f) 
Out[14]: 
0 1000 
1 1000 
2  -2 
3 1000 
4 1000 
Dtype: int64