如何在pandas中定义一个以系列为参数的函数?

问题描述 投票:0回答:1

我有一个数据框架,我想创建一个新的列,其值由位于其他列(在同一行)的值定义。如果我使用简单的操作,这是非常简单的(+, -, * 甚至 abs). 例如,我在Python中定义了自己的函数。

df['new_col'] = abs(df['col1']*df['col2'] - df['col3'])

然后我在Python中定义了自己的函数,并试着做了如下操作。

df['new_col'] = my_func(df['col1'], df['col2'], df['col3'], df['col4']).

不幸的是,它没有工作。我认为它不工作的原因是由于 my_func 包含 asin, atan 和其他不能应用于系列的函数。例如,如果我尝试 abs(df['col1']) 我没有得到任何抱怨,但如果我尝试。asin(df['col1']) 我得到一个错误信息。

TypeError: only length-1 arrays can be converted to Python scalars

有什么技巧可以让我使用 asin (或我自己的功能 my_func)以同样的方式 abs+ 的使用?

python pandas series dataframe
1个回答
2
投票

使用 "+"、"-"、"*"甚至 "abs "等简单的操作 numpy's 通用功能.

对于你的情况,使用 numpy.arcsin 而不是 math.asin.

© www.soinside.com 2019 - 2024. All rights reserved.