2013-02-27 49 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 
相关问题