Сопоставление списка укусов с 0 в Pandas Python

#python #string #pandas #mapping

#python #строка #pandas #сопоставление

Вопрос:

Я пытаюсь изучить влияние алкоголя и наркотиков на дорожно-транспортные происшествия, используя открытый набор данных BigQuery. У меня есть готовый набор данных, и я просто дорабатываю его дальше. Я хочу классифицировать строковые записи в столбцах pandas.

Фрейм данных содержит более 11 000 записей, и в каждом столбце содержится около 44 уникальных значений. Однако я просто хочу классифицировать только те записи, в которых говорится «Употребление алкоголя» и «Наркотики (незаконные)», на 1 и соответственно. Я хочу сопоставить любую другую запись с 0.

Я создал список всех записей, которые меня не волнуют и от которых я хочу избавиться, и они находятся в списке следующим образом:

 list_ign  = ['Backing Unsafely',
   'Turning Improperly', 'Other Vehicular',
   'Driver Inattention/Distraction', 'Following Too Closely',
   'Oversized Vehicle', 'Driver Inexperience', 'Brakes Defective',
   'View Obstructed/Limited', 'Passing or Lane Usage Improper',
   'Unsafe Lane Changing', 'Failure to Yield Right-of-Way',
   'Fatigued/Drowsy', 'Prescription Medication',
   'Failure to Keep Right', 'Pavement Slippery', 'Lost Consciousness',
   'Cell Phone (hands-free)', 'Outside Car Distraction',
   'Traffic Control Disregarded', 'Fell Asleep',
   'Passenger Distraction', 'Physical Disability', 'Illness', 'Glare',
   'Other Electronic Device', 'Obstruction/Debris', 'Unsafe Speed',
   'Aggressive Driving/Road Rage',
   'Pedestrian/Bicyclist/Other Pedestrian Error/Confusion',
   'Reaction to Other Uninvolved Vehicle', 'Steering Failure',
   'Traffic Control Device Improper/Non-Working',
   'Tire Failure/Inadequate', 'Animals Action',
   'Driverless/Runaway Vehicle']
  

Что я мог бы сделать, чтобы просто сопоставить «Участие в употреблении алкоголя» и «Наркотики (незаконные)» с 1 и соответственно и установить все в показанном списке на 0

Комментарии:

1. Зачем вам нужен список вещей, которые вы не хотите? Просто сохраните (более короткий) список того, что вы хотите, затем установите для всего остального значение 0. Разве это не правильный путь?

Ответ №1:

Допустим, ваш исходный столбец назван Crime :

 import numpy as np

df['Illegal'] = np.where(df['Crime'].isin(['Alcohol Involvement', 'Drugs']), 1, 0)
  

Или,

 df['Crime'] = df['Crime'].isin(['Alcohol Involvement', 'Drugs']).astype(int)
  

Ответ №2:

Итак, пока вышеупомянутые методы работают нормально. Однако они не помечали все категории, которые я хотел удалить позже. Итак, я использовал этот метод,

 for word in list_ign:
    df = df.replace(str(word), 'Replace')