如果我们有两个系列s1
和s2
,我们可以对它们应用算术运算:s1 + s2
或s1*s2
。算术运算将成对应用(假设两个系列具有相同的长度),因此我们得到一个新的系列。此功能使许多事情变得更加容易。
现在,我尝试定义自己的运算符并将其应用于两个系列:
def f(x1, x2):
if x2 > 0:
return x1/x2
else:
return 1000.0
我尝试将其应用于两个系列:f(s1,s2)
。这是行不通的。在某种程度上,由于用户定义的函数不知道如何处理序列,因此可以预期。所以,我的问题是,是否有一种优雅的方式来做我想做的事情?
答案 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