这可能已经在堆栈中得到了解答,我只是不知道表达这个问题的最佳方法。但是我试图遍历包含不完整字符串的DataFrame(数据)中的一列(data [“ Id”]),并将其替换为列表中具有的完整版本。
我不能仅仅通过用列表值重新分配列值来直接进行切换,因为列中的值是随机排序的,并且它们连接到数据框中其他重要的列值。
我尝试这样做:
CriteriaBuilder.in()
但是我的列表值和列值非常大(每个值120,000),因此此方法将永远花费。我想知道是否有人知道解决此问题的更好方法?如果这个问题是多余的,我事先表示歉意,感谢您回答此问题的链接。
列表示例:
[“ 0img1_type1.png”,“ 1img1_type2.png”,“ 2img1_type3.png”]
数据[“ Id”]示例:
[“ 0img1”,“ 1img1”,“ 2img1”]
答案 0 :(得分:2)
根据您的示例,您可以使用:
df = pd.DataFrame([["0img1","1img1","2img1"]]).T
df.columns = ['id']
l = ["0img1_type1.png","1img1_type2.png","2img1_type3.png"]
l = set(l)
df['id'] = df['id'].apply(lambda x: [i for i in l if x in i][0])
df
基本上,它从列表中检索与列值中的子字符串匹配的第一个值。为了更快地查找,最好将list
转换为set
。