在pandas中可以对序列应用用户定义函数吗?

0 投票
1 回答
669 浏览
提问于 2025-04-17 17:19

如果我们有两个序列 s1s2,我们可以对它们进行一些数学运算,比如 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

撰写回答