求助:如何合并CSV文件构建符合要求的深度学习标签数据集?
解决Image列与Level列的合并问题
嘿Vidit,我明白你现在的困扰——要把分散的Image列和level列合并成每个左右眼条目对应等级的格式对吧?别担心,我来给你一步步讲清楚怎么用pandas搞定这个问题,先分两种常见的场景来处理:
场景一:已有完整的Image列表,需关联对应Level
如果你的数据里已经有所有1_left、1_right这类Image条目,而Level是按ID(比如数字1、2...)分组存储的,那核心是从Image名称里提取ID,再和Level表关联:
步骤代码:
import pandas as pd # 1. 读取Excel文件中的Image数据和Level数据 # 假设Image数据在"Images"工作表,Level数据在"Levels"工作表 df_images = pd.read_excel("你的文件名.xlsx", sheet_name="Images") df_levels = pd.read_excel("你的文件名.xlsx", sheet_name="Levels") # 2. 从Image列提取ID(比如从"1_left"中取出"1") df_images["ID"] = df_images["Image"].str.split("_").str[0] # 转换ID为数值类型,确保和Level表的ID类型一致 df_images["ID"] = df_images["ID"].astype(int) df_levels["ID"] = df_levels["ID"].astype(int) # 3. 按ID合并两个表 merged_df = pd.merge(df_images, df_levels, on="ID", how="left") # 4. 保留需要的列并整理格式 final_df = merged_df[["Image", "level"]] print(final_df.head())
场景二:只有ID和Level,需生成左右眼Image条目
如果你的原始数据里只有每个ID对应的Level值,需要生成_left和_right的Image条目并对应Level,那可以这样做:
步骤代码:
import pandas as pd # 1. 读取包含ID和Level的原始数据 df = pd.read_excel("你的文件名.xlsx") # 2. 生成左眼Image条目 df_left = df.copy() df_left["Image"] = df_left["ID"].apply(lambda x: f"{x}_left") # 3. 生成右眼Image条目 df_right = df.copy() df_right["Image"] = df_right["ID"].apply(lambda x: f"{x}_right") # 4. 合并左右眼数据并整理列顺序 merged_df = pd.concat([df_left, df_right], ignore_index=True) final_df = merged_df[["Image", "level"]] # 5. 按Image名称排序(可选) final_df.sort_values("Image", inplace=True) print(final_df.head())
为什么之前merge/join没成功?
大概率是因为没有找到正确的关联键:要么是没从Image名称里提取出和Level表匹配的ID,要么是ID的类型不匹配(比如一个是字符串,一个是整数),导致无法正确关联。上面的代码里已经处理了这些细节。
你可以根据自己实际的数据结构选择对应的方法,要是还有问题可以告诉我数据的具体结构哦~
内容的提问来源于stack exchange,提问作者vidit02100
相关产品推荐
相关产品推荐

