这可能已经在堆栈中得到了回答,我只是不知道表达这个问题的最佳方式。但我试图遍历 DataFrame(数据)中包含不完整字符串的列(data["Id"]),并将它们替换为列表中的完整版本。
我无法通过仅用列表值重新分配列值来彻底进行切换,因为列中的值是随机排序的,并且它们连接到数据帧中重要的其他列值。
我尝试这样做:
for img_name in images_list:
for label in data["Id"]:
if label in img_name:
data["Id"] = data["Id"].replace(label,img_name)
但是我的列表值和列值非常大(每个 120,000),因此此方法将永远花费时间。我想知道是否有人知道解决这个问题的更好方法?如果这个问题是多余的,我提前道歉,并且非常感谢能回答这个问题的链接。
列表示例:
["0img1_type1.png","1img1_type2.png","2img1_type3.png"]
数据[“Id”]示例:
["0img1","1img1","2img1"]
最佳答案
根据您的示例,您可以使用:
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
。
关于python - 使用列表中的值替换列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001241/