У меня есть таблица (40000 x 3) из 3 столбцов и 40000 строк, один столбец не связан с проблемой, а два других столбца содержат числовые значения в градусах. Как я могу преобразовать все значения в столбцах 2 и 3 из радианов в градусы?

Примечание: DF4 - это имя таблицы. широта и долгота - это имена двух столбцов.

Я попытался создать функцию (deg_to_rad ()), затем я присвоил переменную столбцу 2 и другую переменную столбцу 3. Затем я попытался вызвать функцию с именем переменной в качестве аргумента. Я сделал это дважды для каждого столбца. Он работает в том смысле, что он конвертирует значения в радианы, но я не могу собрать два столбца обратно в таблицу с третьим столбцом.

Есть ли более простой способ достичь этой цели?

Кроме того, возможно ли использовать лямбда вместо этого?

Это код, который я написал:

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
Beginner_Hello 5 Июл 2019 в 13:12

3 ответа

Лучший ответ

IIUC вы можете просто сделать:

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'])
2
EdChum - Reinstate Monica 5 Июл 2019 в 10:15

Предполагая, что таблица выглядит так:

x, lat, long
.    .    .
.    .    .

Оберните функцию в лямбду и используйте apply ().

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

Однако, если основная цель сделать это для расчета расстояния, вы можете использовать Формула Хаверсайна , чтобы рассчитать без этого преобразования.

Прочитайте это

1
Lakshya Srivastava 5 Июл 2019 в 10:24

Я предполагаю, что вы используете панды.

Чтобы добавить новый столбец, вы делаете

df['col_name'] = deg_to_rad(some_val)

NumPy предоставляет векторизованные функции для преобразования значений из градусов в радианы и наоборот, поэтому вам не нужно определять свои собственные.

0
absolutelydevastated 5 Июл 2019 в 10:17