标签:文件 img df 信息 keys path csv id
我们可以利用train.csv文件信息, 再结合给定的文件路径(path)信息,可以将给定字目录下的图片名信息整合到scv文件当中。
train.csv文件格式:
图片名信息:
代码如下:
from glob import glob import pandas as pd import os def enrich_data(df, sdir="train"): imgs = glob(os.path.join(DATASET_FOLDER, sdir, "case*", "case*_day*", "scans", "*.png")) img_folders = [os.path.dirname(p).split(os.path.sep) for p in imgs] img_names = [os.path.splitext(os.path.basename(p))[0].split("_") for p in imgs] img_keys = [f"{f[-2]}_slice_{n[1]}" for f, n in zip(img_folders, img_names)] # print(img_keys[:5]) df["img_path"] = df["id"].map({k: p for k, p in zip(img_keys, imgs)}) df["Case_Day"] = df["id"].map({k: f[-2] for k, f in zip(img_keys, img_folders)}) df["Case"] = df["id"].apply(lambda x: int(x.split("_")[0].replace("case", ""))) df["Day"] = df["id"].apply(lambda x: int(x.split("_")[1].replace("day", ""))) df["Slice"] = df["id"].map({k: int(n[1]) for k, n in zip(img_keys, img_names)}) df["width"] = df["id"].map({k: int(n[2]) for k, n in zip(img_keys, img_names)}) df["height"] = df["id"].map({k: int(n[3]) for k, n in zip(img_keys, img_names)}) df["spacing1"] = df["id"].map({k: float(n[4]) for k, n in zip(img_keys, img_names)}) df["spacing2"] = df["id"].map({k: float(n[5]) for k, n in zip(img_keys, img_names)}) if __name__ == "__main__": # df_ssub = pd.read_csv(os.path.join(DATASET_FOLDER, "sample_submission.csv")) DATASET_FOLDER = "D:\compation\kaggle" df_ssub = pd.read_csv(os.path.join(DATASET_FOLDER, "train.csv","traines.csv")) enrich_data(df_ssub,"traines") df_ssub.to_csv("df.csv") print(df_ssub["Case_Day"][4])
结果:
标签:文件,img,df,信息,keys,path,csv,id 来源: https://www.cnblogs.com/peixu/p/16244028.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。