pandas многократная замена данных с использованием словаря или списка фактических и ожидаемых строк - PullRequest
0 голосов
/ 05 мая 2020

Ввод:

import pandas as pd
codes = ['1', '2', '3', '4']
data = [['AAA', '3A'], ['BBB', '3D'], ['CCC', '2A'], ['DDD', '1B'], ['EEE', '44'], ['FFF', '3A'], ['GGG', 'Y']] 
df = pd.DataFrame(data, columns = ['name', 'occupation_code']) 

Out[8]: 
  name occupation_code
0  AAA              3A
1  BBB              3D
2  CCC              2A
3  DDD              1B
4  EEE              44
5  FFF              3A
6  GGG               Y

Теперь я хочу заменить неправильный код точными кодами, для этого в настоящее время я пишу несколько операторов замены, как показано ниже:

df["occupation_code"] = df["occupation_code"].replace(to_replace = ["3A","3D"] ,value = "3")
df["occupation_code"] = df["occupation_code"].replace(to_replace = ["2A"] ,value = "2")
df["occupation_code"] = df["occupation_code"].replace(to_replace = ["1B"] ,value = "1")
df["occupation_code"] = df["occupation_code"].replace(to_replace = ["44"] ,value = "4")
df["occupation_code"] = df["occupation_code"].replace(to_replace = ["Y"] ,value = "1")

  name occupation_code
0  AAA               3
1  BBB               3
2  CCC               2
3  DDD               1
4  EEE               4
5  FFF               3
6  GGG               1

Но в данных есть 100 неправильных кодов занятий, есть ли способ сделать это с помощью одного go, предоставив словарь или списки фактических и заменяющих кодов?

1 Ответ

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

Создать словарь для замены - это первая идея:

d = {'3A':"3",'3D':'3', "2A":"2","1B":"1" , "44":"4", 'Y':"1"}
df["occupation_code1"] = df["occupation_code"].replace(d)

Или, если возможно, получить первое значение строк, а затем заменить только нечисловые c значения:

df["occupation_code2"] = df["occupation_code"].str[0].replace({'Y':"1"})
print (df)
  name occupation_code occupation_code1 occupation_code2
0  AAA              3A                3                3
1  BBB              3D                3                3
2  CCC              2A                2                2
3  DDD              1B                1                1
4  EEE              44                4                4
5  FFF              3A                3                3
6  GGG               Y                1                1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...