是否可以将用户定义的函数应用于pandas中的系列?

时间:2013-02-27 14:52:51

标签: python pandas series operations

如果我们有两个系列s1s2,我们可以对它们应用算术运算:s1 + s2s1*s2。算术运算将成对应用(假设两个系列具有相同的长度),因此我们得到一个新的系列。此功能使许多事情变得更加容易。

现在,我尝试定义自己的运算符并将其应用于两个系列:

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

我尝试将其应用于两个系列:f(s1,s2)。这是行不通的。在某种程度上,由于用户定义的函数不知道如何处理序列,因此可以预期。所以,我的问题是,是否有一种优雅的方式来做我想做的事情?

1 个答案:

答案 0 :(得分: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