查找字符串中的特定数字并赋值

Posted

技术标签:

【中文标题】查找字符串中的特定数字并赋值【英文标题】:Finding specific numbers in a string and assigning a value 【发布时间】:2020-11-23 10:53:29 【问题描述】:

我有一列包含唯一的员工 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> 

TIA!

【问题讨论】:

【参考方案1】:

出现此错误是因为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'

【讨论】:

我现在已经对问题进行了排序,而是使用了 df.series.str.contains('10') 可以正常工作以获得真/假结果。但是,有没有办法返回一个包含位置的新列?非常感谢【参考方案2】:
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)

【讨论】:

欢迎来到 ***。如果这个问题的格式正确,网站不会让你发布你的答案,因为它是 100% 的代码,没有任何解释。你能解释一下你的答案吗?

以上是关于查找字符串中的特定数字并赋值的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何查找和删除MYSQL数据库中包含特定字符串的记录

python查找文本文档中特定间隔位置的字符并替换

Java语言中,怎么样查找一个特定的字符串,并返回它的索引位置

Linux如何查找特定字符文件或目录

sed:查找并替换以特定字符串开头的行中的第 n 个字符

MATLAB查找字符数组中是不是存在特定的字符串