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

时间:2013-05-17 08:50:31

标签: python pandas series dataframe

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

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包含asinatan和其他无法应用于系列的函数。例如,如果我尝试abs(df['col1'])我没有抱怨,但如果我尝试asin(df['col1'])我收到错误消息:

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

有没有让我使用asin(或我自己的函数my_func)的技巧与使用abs+的方式相同?

1 个答案:

答案 0 :(得分:2)

使用numpy的{​​{3}}。

对于您的情况,请使用universal functions代替math.asin