Нахождение определенных c чисел в строке и присвоение значения - PullRequest
1 голос
/ 03 августа 2020

У меня есть столбец, содержащий уникальные идентификаторы сотрудников, где уникальное числовое значение (обычно в конце идентификатора) учитывает их местонахождение.

например:

EmployeeID  
ABC-10  
DEF-70  
GHI-20  
BCD-70   

. ..

, где 10 = Нью-Йорк, 20 = Париж, 70 = Лондон

Я хотел бы создать цикл / фрагмент кода, который сканирует EmployeeID на предмет значения, а затем назначает соответствующий столбец с Location. Я пробовал следующее:

df.loc[df['EmployeeID'].contains("10"), 'Location'] == 'New York'

Однако я получаю следующую ошибку:

AttributeError: объект 'str' не имеет атрибута 'lo c '

Я надеюсь достичь следующего:

EmployeeID       Location 
 
ABC-10           New York <br>
DEF-70           London <br>
GHI-20           Paris <br>
BCD-70           London <br> 

TIA!

Ответы [ 2 ]

1 голос
/ 03 августа 2020
import pandas as pd

data = ["ABC-10","DEF-70","GHI-20","BCD-70"]

df = pd.DataFrame(data, columns = ["EmployeeID"])    

dict1 = {10: "New York", 70:"London", 20:"Paris"}

print(dict1)

def get_id(text):
    id=int(text.split("-")[-1])
    return dict1[id]   

df['Locations'] = df["EmployeeID"].apply(get_id)

print (df)
0 голосов
/ 03 августа 2020

Эта ошибка возникает из-за того, что df определен как строка, а не как DataFrame, и поэтому строка не имеет атрибута loc. Пожалуйста, проверьте свое определение df еще раз.

Вам просто нужно правильно переопределить df и повторить то же logi c для каждого названия города, и ваш код должен работать.

df.loc[df['EmployeeID'].contains("10"), 'Location'] == 'New York'
df.loc[df['EmployeeID'].contains("20"), 'Location'] == 'Paris'
df.loc[df['EmployeeID'].contains("70"), 'Location'] == 'London'
...