У меня есть 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» в новом столбце, который создается, и все со словом «операции» как «Операции» в новом столбце, который создается.