Создать новый столбец DataFrame из условия существующего? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть кадр данных, состоящий из 3 столбцов: долгота, широта и площадь.

CELL NAME   Longitude   Latitude    area

LE1072_012  -0.072457   61.042381   6.170170e-01
LE1437_011  1.711201    60.936088   5.960055e-01
LE2614_012  0.071279    58.835267   4.412428e-01
LE2826_013  1.558309    60.730385   2.844340e-01
LE2346_011  -1.056118   59.646612   2.528572e-01
LE2676_012  -0.198150   58.546112   2.395335e-01
LE2526_012  0.594452    59.184265   2.392216e-01
....

Мне нужен четвертый столбец, который зависит от значения площади. Если площадь превышает пороговое значение, следует указать «сельская местность», а если она меньше «городская»

Я хотел реализовать это как функцию с if

def CellType(area):
        if area > threshold
           a='rural'
        else
           a='urban'
        return a

и затем назовите это так

df['CellType']=CellType(df['area'])

Таким образом, я получаю сообщение об ошибке, в котором говорится, что условие ряда неоднозначно

Тогда я попробовал этот кусок кода

for i in range(len(df)):
    if df['area'][i]<0.002:
        df['CellType'][i]='urban'
    else:
        df['CellType'][i]='rural'

Это работает, но это занимает вечность, когда я запускаю это на ячейках 15k

Есть ли способ сделать эту задачу быстрее? Спасибо

1 Ответ

1 голос
/ 05 апреля 2019

Вы можете использовать np.where, чтобы возвращать элементы, выбранные в зависимости от условия.Первый параметр - ваше условие , второй - возврат, если условие True , последний - если условие False

df['CellType'] = np.where(df['area'] < 0.002, 'urban','rural')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...