使用列表中的值替换列中的值

时间:2018-10-26 04:04:38

标签: python pandas

这可能已经在堆栈中得到了解答,我只是不知道表达这个问题的最佳方法。但是我试图遍历包含不完整字符串的DataFrame(数据)中的一列(data [“ Id”]),并将其替换为列表中具有的完整版本。

我不能仅仅通过用列表值重新分配列值来直接进行切换,因为列中的值是随机排序的,并且它们连接到数据框中其他重要的列值。

我尝试这样做:

CriteriaBuilder.in()

但是我的列表值和列值非常大(每个值120,000),因此此方法将永远花费。我想知道是否有人知道解决此问题的更好方法?如果这个问题是多余的,我事先表示歉意,感谢您回答此问题的链接。

列表示例:

[“ 0img1_type1.png”,“ 1img1_type2.png”,“ 2img1_type3.png”]

数据[“ Id”]示例:

[“ 0img1”,“ 1img1”,“ 2img1”]

1 个答案:

答案 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