我在第一列中有一个图像路径的数据帧。如图所示:输入数据帧
图像的文件名包含ID(ImageID(和图像类型(Topo(。我想生成输出数据帧,比如,它生成不同拓扑的不同列。因此,对于一个图像ID,我得到了六列拓扑。输出如下所示:输出数据帧
拓扑的数量可以不同,可以从4个运行到27个。因此,输出列的数量可能不同。
首先,我们必须提取拓扑列表:
list_of_topos = list(pd.DataFrame([x.split('_')[-1].split('.')[0] for x in df['Image ID'].tolist()])[0].unique())
在这里,我们在将图像ID除以"_"one_answers"&";,并获取唯一值的列表
然后我们创建新列,如下所示:
df[list_of_topos] = None
最后一步是为每一行列分配值:
for index, row in df.iterrows():
extention = "." + row['Image'].split(".")[-1]
row[list_of_topos] = ["_".join(row['Image'].split("_")[:-1]) + x + extention for x in list_of_topos]
请注意,此解决方案假设所有数据都与您的问题中的结构相同