我编写了下面的代码来迭代数据帧(df_final_exheader),获取文件路径并从相应的图像中读取元数据。在这一点上感觉比它需要的要慢,但我很难找到解决方案(我有非程序员背景,可能缺乏基本知识)。
如果我是正确的,其中一个问题是使用.iterrows在数据帧上循环,阅读指南我认为我需要实现矢量化,但我不知道如何选择它。有人可以在正确的方向上轻轻推动我吗?
def read_dicom_header(input_dir_im, df_final_exheader):
i = 0
for row,index in df_final_exheader.iterrows():
ds = dicom.dcmread(os.path.join(input_dir_im,df_final_exheader.loc[row, 'path']))
header_dict = {'kVp':[0x18,0x60],'uAs':[0X18,0x1153],'EI':[0x18,0x1411],'DAP':[0x18,0x115E],'REX':[0x18, 0x1405]}
for key, val in header_dict.items():
try:
df_final_exheader.loc[row, key] = ds[[hex(x) for x in val]].value
except KeyError:
df_final_exheader.loc[row, key] = 'na'
i+=1
if i%500==0:
print(row)
return df_final_exheader