我有几个包含TTree的ROOT文件,(其中包括)一些分支是TVector3对象。我正在尝试将向量分量(x,y,z)加载到Pandas DataFrame中,但是无论如何尝试,我都会不断收到此错误:
ValueError: cannot interpret branch b'hitPosExtrap' as a Python type
我尝试使用uproot.pandas.iterate
,但也尝试使用树的f[tree_name].array('hitPosExtrap')
方法无济于事。阅读根目录下的自述文件后,我似乎可以理解TVector3对象,但是我想我缺少了一些东西。
有人知道我从这些树中提取矢量分量(或某些类似TVector3的对象)的方法吗?
答案 0 :(得分:2)
问题似乎是TVector3作为子分支存储在此特定的根文件中。向量分量可以作为该子分支的叶子来访问:
f[tree_name]["hitPosExtrap"]["fX"].array()
f[tree_name]["hitPosExtrap"]["fY"].array()
f[tree_name]["hitPosExtrap"]["fZ"].array()
经过一番讨论(https://github.com/scikit-hep/uproot/issues/443),看来当使用pandas.iterate
函数时,uproot当前不直接支持提供分支+子分支的名称。现在,必须显式访问子分支。