在pandas中可以对序列应用用户定义函数吗?
如果我们有两个序列 s1
和 s2
,我们可以对它们进行一些数学运算,比如 s1 + s2
或者 s1 * s2
。这些运算会一一对应地进行(前提是这两个序列的长度相同),最后会得到一个新的序列。这种特性让很多事情变得简单多了。
现在,我想定义一个自己的运算符,并把它应用到这两个序列上:
def f(x1, x2):
if x2 > 0:
return x1/x2
else:
return 1000.0
然后我尝试把它应用到两个序列上: f(s1,s2)
。结果没有成功。这在一定程度上是可以理解的,因为用户自己定义的函数并不知道怎么处理序列。那么,我的问题是,有没有优雅的方法可以实现我想做的事情呢?
1 个回答
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