Замена определенных значений в столбце беспорядочными данными - PullRequest
0 голосов
/ 08 июля 2020

У меня очень длинный набор данных, который хранится в виде фрейма данных. Столбец, на который я смотрю, называется «Страна». В этой колонке довольно много стран. Проблема в том, что я хочу изменить различные значения на «США». Я пытаюсь изменить следующие значения: США, Соединенные Штаты, Соединенные Штаты и c. Слишком много вариаций и опечаток (более 100), чтобы я мог до go. Есть ли более простой способ изменить эти значения? Поскольку в наборе данных есть другие страны, я не могу просто изменить все значения на USA

1 Ответ

1 голос
/ 09 июля 2020

Одна из вещей, которую вы можете сделать, - это придерживаться первой буквы каждого слова. Для всего экземпляра первая буква U, а для второй части (если вы разделите всю строку) S. Здесь я использую пакет регулярных выражений, который обычно используется при работе с текстами.

Import re   
Split_parts = [re.split(r'[^A-Z,^a-z]', i) for i in df['country']]

Приведенная выше строка кода разбивает строку на основе любого символа без алфавита c (например, точка, запятая , точка с запятой и т.д. c.). после разделения вы можете создать for l oop, который генерирует элементы True, False, если первые символы - это U и S. соответственно.

value= []
for i in Split_parts:
    if i[0][0] in ['u','U'] and  i[1][0] in ['s','S']:
        value.append(True)
    else:
        value.append(False)

После этого вы можете заменить строку тем, что вы потребность (например, США):

for i in range(len(value)):
    if value[i]==True:
        df['country'][i]='USA'

Единственная страна в мире, в которой буквы U и S являются первыми буквами соответственно, - это Соединенные Штаты. Решение здесь не то, что можно использовать для всех проблем, с которыми вы можете столкнуться. Для каждого нужно искать отличия .

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