Как создать столбец в фрейме данных pandas, которому присваивается значение на основе значения другого столбца - PullRequest
0 голосов
/ 06 марта 2020

У меня есть Dataframe с двумя столбцами, именем и позицией.

import pandas as pd 

data = {'Name':['Tom', 'nick',"Bob", "john", 'krish', 'jack'], 'Position':["Managing Director", "MD","Director", "Chief operations officer","Chief Operations Officer", "COO"]} 

df = pd.DataFrame(data) 
df

Мне нужно создать новый столбец с именем simple_position с ячейками для столбца позиции.

Таким образом, «Управляющий директор», «MD», «Директор», все помещаются в одну корзину, называемую «Верхний уровень», а «Главный операционный директор», «Главный операционный директор», «COO» помещаются в корзину, называемую Операции.

Вот код, который я использовал для этого:

mapping = { "Top_Level" : ["Managing Director","MD",],
           "Operations" : ["Chief operations officer", "COO"]
           }

for k in mapping:
    df.loc[df[df['Position'].mask(~df.Position.isin(mapping[k])).notnull()].index.tolist(), 'simple_position'] = k

Проблема, которую я пытаюсь решить, - это найти более простой способ связать все варианты столбец позиции без необходимости указывать их все в словаре сопоставления.

В столбце могут быть строки типа "управляющий директор", "управляющий директор" или "MD", которые могут быть для l oop не распознал бы, потому что это не в правильном случае, или я не добавил его в словарь сопоставления.

Например, я ищу способ получить все, что имеет слово «директор» "или это связано с этой позицией s «Top_Level» в новом столбце, который создается, и все со словом «операции» как «Операции» в новом столбце, который создается.

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