我有一个数据框架,我想创建一个新的列,其值由位于其他列(在同一行)的值定义。如果我使用简单的操作,这是非常简单的(+
, -
, *
甚至 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
或 +
的使用?
使用 "+"、"-"、"*"甚至 "abs "等简单的操作 numpy
's 通用功能.
对于你的情况,使用 numpy.arcsin 而不是 math.asin
.