Фрейм данных Python: изменение отрицательных полярных углов на положительные - PullRequest
0 голосов
/ 21 мая 2018

Это не работает:

df[df['angle'] < 0]] += 360

Как мне решить эту проблему?Мне нужно иметь уже существующий фрейм данных pandas с отрицательными и положительными углами, обновлять до положительных углов полярных координат (от 0 до 360 градусов).

Имеют:

[-135, -90, -45, 180, 135, 90, 45, 0, etc... ] # polar 'angles' in degrees (with negatives)

Хочу:

[315, 270, 225, 180, 135, 90, 45, 0, etc... ] # polar 'angles' in degrees (positive only)

// Правка (для ответов): /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Эта строка, df[df['angle'] < 0]] += 360, дает типошибка:
"Ошибка типа: не может работать 360 со значениями блока, должен быть str, а не с плавающей точкой."

Информация о фрейме данных 'angle':
"Имя: angle, dtype: in64,

Исходное решение "грубой силы", которое я использую:

for i in range(len(df['angle'])):
    if df['angle'][i] < 0:
        df['angle'][i] += 360

Это работает, но работает медленно и выдает предупреждение, которое затем говорит мне искать документацию по фрейму данныхиндексирование.

1 Ответ

0 голосов
/ 22 мая 2018

Используйте

df['angle'] %= 360 

, чтобы преобразовать все углы независимо от знака в диапазон [0-360).Это будет работать правильно для отрицательных градусов или для углов, абсолютное значение которых превышает 360

, например:

-270 % 360 == 90
-675 % 360 == 45
675 % 360 == 315

, если вы хотите обрабатывать только отрицательные градусы (т.е. разрешить 450 вместо преобразованияэто до 90):

df.iloc[df.angle < 360, 'angle'] %= 360
...