2013-02-27 51 views
0

如果我們有兩個系列s1s2,我們可以對它們應用算術運算:s1 + s2s1*s2。算術運算將成對應用(假設兩個系列具有相同的長度),因此我們得到一個新系列。這個功能使得許多事情變得更加簡單。是否可以將用戶定義的函數應用到熊貓系列中?

現在,我嘗試定義我自己的運營商,它適用於兩個系列:

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

我嘗試將其應用到兩個系列:f(s1,s2)。這是行不通的。由於用戶定義的函數不知道如何處理系列,所以在一定程度上可以預料。所以,我的問題是,如果有一種優雅的方式來做我想做的事情?

+0

這個失敗的原因是因爲'x2> 0'是一個Series,而不是True/False – Zelazny7 2013-02-27 15:29:46

回答

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 
相關問題