Подстановочный знак в словаре питона - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь создать словарь Python для ссылки на «WHM1», 2,3, «HISPM1», 2,3 и т. Д. И другие итерации, чтобы создать новый столбец с определенной строкой для ex.Белый или латиноамериканец.Использование регулярных выражений кажется правильным путем, но я что-то здесь упускаю и отказываюсь жестко кодировать все это в словаре.

Я пробовал несколько итераций регулярных выражений и регулярных выражений:

d = regexdict({'W*':'White', 'H*':'Hispanic'})
eeoc_nac2_All_unpivot_df['Race'] = 
eeoc_nac2_All_unpivot_df['EEOC_Code'].map(d)

Новый столбец будет создан с 'White' или 'Hispanic' для каждой строки на основе того, что находится в существующем столбце с именем 'EEOC_Code'.

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Ваши регулярные выражения неверны - вы, кажется, используете синтаксис glob вместо правильных регулярных выражений.

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

d = regexdict({'^W':'White', '^H':'Hispanic'})

вместо этого, где привязка регулярного выражения ^ соответствует началу строки.

Существует несколько сторонних пакетов 1 , 2 , 3 с именем regexdict, поэтому вы, вероятно, должны указать, какой из них вы используете.Я не могу сказать, нужен ли ^ здесь, или регулярные выражения должны полностью соответствовать входным данным (я предположил, что совпадение подстроки является достаточным, как это обычно имеет место в регулярном выражении), потому что детали такого рода могут сильно отличатьсямежду реализациями.

0 голосов
/ 05 мая 2019

Я не уверен, что полностью понял вашу проблему. Однако, если все ваши метки имеют структуру W HM ... и H ISP ..., вы можете просто проверить первый символ:

for race in eeoc_nac2_All_unpivot_df['EEOC_Code']:
     if race.startswith('W'):
         eeoc_nac2_All_unpivot_df['Race'] = "White"
     else:
         eeoc_nac2_All_unpivot_df['Race'] = "Hispanic"

Примечание : это работает, только если то, что у вас внутри eeoc_nac2_All_unpivot_df['EEOC_Code'], является итеративным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...