Python 如何将DICOM文件的头数据存储在数据帧中?

Python 如何将DICOM文件的头数据存储在数据帧中?,python,python-3.x,pandas,dicom,pydicom,Python,Python 3.x,Pandas,Dicom,Pydicom,我试图在Python中使用pydicom读取DICOM文件,并希望将头数据存储到数据帧中。如何为此提取数据元素值 到目前为止,我已经在DICOM文件中创建了一个以列作为标记名的数据框架。我已经访问了数据元素,但我只需要存储数据元素的值,而不需要存储整个序列。为此,我将序列转换为字符串并尝试拆分它。但是它也不起作用,因为不同标签的长度不同 refDs=dicom.dcmread('000000.dcm') info_header=refDs.dir() df=pd.DataFrame(列=信息头)

我试图在Python中使用pydicom读取DICOM文件,并希望将头数据存储到数据帧中。如何为此提取数据元素值

到目前为止,我已经在DICOM文件中创建了一个以列作为标记名的数据框架。我已经访问了数据元素,但我只需要存储数据元素的值,而不需要存储整个序列。为此,我将序列转换为字符串并尝试拆分它。但是它也不起作用,因为不同标签的长度不同

refDs=dicom.dcmread('000000.dcm')
info_header=refDs.dir()
df=pd.DataFrame(列=信息头)
打印(df)
信息数据=[]
对于信息_标题中的i:
如果(参考文献中的i):
info_data.append(str(refDs.data_元素(i)).split(“”[0]))
打印(信息数据[0],透镜(信息数据))
我已经将数据元素sequence元素放在了一个列表中,因为我不能直接将它放在数据帧中。上述代码的输出是

(0008, 0050) Accession Number                    SH: '1091888302507299' 89
但我只想将数据存储在引号内。

这对我来说很有用:

import pydicom as dicom
import pandas as pd

ds = dicom.read_file('path_to_file')
df = pd.DataFrame(ds.values())
df[0] = df[0].apply(lambda x: dicom.dataelem.DataElement_from_raw(x) if isinstance(x, dicom.dataelem.RawDataElement) else x)
df['name'] = df[0].apply(lambda x: x.name)
df['value'] = df[0].apply(lambda x: x.value)
df = df[['name', 'value']]
最终,您可以将其转置:

df = df.set_index('name').T.reset_index(drop=True)
如果您也需要嵌套字段,则需要进行更多的工作