我有几个根文件,其中包含一个带有一些分支的TTree,这些分支是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的对象)?
发布于 2020-01-28 01:29:23
问题似乎是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),看起来branches+subbranches当前并不直接支持在使用pandas.iterate函数时提供uproot的名称。现在,必须显式访问子分支。
https://stackoverflow.com/questions/59930539
复制相似问题