我有一个列包含唯一的员工ID,其中唯一的数字值(通常在ID的末尾)说明他们的位置。
例如:
EmployeeID
ABC-10
DEF-70
GHI-20
BCD-70 ..。
10 =纽约,20 =巴黎,70 =伦敦
我想要创建一个循环/代码块,它扫描EmployeeID的值,然后指定相应的列和位置。我试过以下几种方法:
df.loc[df['EmployeeID'].contains("10"), 'Location'] == 'New York'
但是,我得到了以下错误:
AttributeError:'str‘对象没有属性'loc’
我希望实现以下目标:
EmployeeID Location
ABC-10 New York <br>
DEF-70 London <br>
GHI-20 Paris <br>
BCD-70 London <br> 蒂娅!
发布于 2020-08-03 12:06:01
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)发布于 2020-08-03 11:10:01
之所以会发生此错误,是因为df被定义为字符串,而不是DataFrame,因此字符串没有属性loc。请再次检查您对df的定义。
您只需要正确地重新定义df,并对每个城市名称重复相同的逻辑,您的代码就可以工作了。
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'https://stackoverflow.com/questions/63228314
复制相似问题