2

我有一个包含 2 个地理位置(long_1、lat_1、long_2、lat_2)列的 pandas DataFrame,我想为它们之间的距离添加一列。近似公式可以在互联网上找到,忽略细节,它涉及 sin 和 cos,这就是我的问题所在。

我要计算np.sin( df["long_1"] )。如果所有值都不为空,则它可以工作,但是一旦我缺少值,它就会引发错误而不是返回NaN。我收到以下错误:

In [97]: np.sin( df["long_1"] )
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-97-d95dd98ecd44> in <module>()
----> 1 np.sin( df["long_1"] )

AttributeError: sin

知道可能是什么问题吗?或者,如果我在这里错了-在具有一些缺失值的系列上计算 sin/cos 的最佳方法是什么(预期的行为应该是NaN在输入值缺失时返回)。

谢谢!

4

1 回答 1

8

看起来您的 dtype 是对象,这意味着 numpy 尝试sin在数组的每个元素上调用一个属性。将其键入为 float 应该可以工作。

例如

df["long_1"] = df["long_1"].astype(np.float64)

或者

np.sin(df["long_1"].astype(np.float64))

HTH,戴夫

于 2013-11-06T11:09:44.467 回答