如何将表格中的2列从度转换为弧度?

4

我有一张表格(40000 x 3),3列,40000行,其中一列与问题无关,另外两列包含以度为单位的数值。如何将第二列和第三列中所有值从弧度转换为度数?

注意:DF4是表格的名称,latitude和longitude是两列的名称。

我尝试创建一个函数(deg_to_rad()),然后将变量分别赋值给第2列和第3列。然后我尝试使用变量名作为参数调用该函数。对于每个列,我都进行了两次操作。它确实能够将值转换为弧度,但我无法将两列合并回包含第三列的表格中。

有没有更简单的方法来实现这个目标?

同时,是否可以使用lambda?

这是我编写的代码:

def deg_to_rad(dr):
    return (dr*math.pi)/180

DEG_TO_RAD_ATTEMPT_LATITUDE = DF4['latitude']
DEG_TO_RAD_ATTEMPT_LONGITUDE = DF4['longitude']
deg_to_rad((DEG_TO_RAD_ATTEMPT_LATITUDE))
deg_to_rad((DEG_TO_RAD_ATTEMPT_LONGITUDE)) 
3个回答

4

如果我理解正确,您只需执行以下操作:

DF4['latitude'] = deg_to_rad(DF4['latitude'])
DF4['longitude'] = deg_to_rad(DF4['longitude'])

你没有将函数的返回结果赋值回去。

这里你使用了一个引用:

DEG_TO_RAD_ATTEMPT_LATITUDE = DF4['latitude']

你把它传递给函数,该函数将返回结果,但是这并没有被分配给任何内容,也没有修改传入的列。
此外,你可以使用 np.deg2rad 来实现相同的效果。
import numpy as np

DF4['latitude'] = np.deg2rad(DF4['latitude'])
DF4['longitude'] = np.deg2rad(DF4['longitude'])

1
假设表格如下所示:

x, lat, long
.    .    .
.    .    .

将函数用lambda包装,并使用apply()方法。

df['lat'] = df['lat'].apply(lambda x: logic)
df['long'] = df['long'].apply(lambda x: logic)

然而,如果主要目的是计算距离,则可以使用Haversine公式来进行计算,而无需进行此转换。

阅读this


0

我猜你正在使用Pandas。

要添加新列,你可以这样做:

df['col_name'] = deg_to_rad(some_val)

NumPy提供了向量化函数,用于将值从度数和弧度之间相互转换,因此您实际上不需要定义自己的函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接