Could you tell me which C++ type the branch has? You can find that out via your_tree->Print(), e.g., directly in the ROOT prompt. A bit reference in PyROOT hints to some pointer-like type.
A quick fix for now would be the following:
df = ROOT.RDataFrame(...)
df = df.Define("new_x", "int(x)") # Convert x of your C++ data-type to int with a C++ cast
x = df.AsNumpy(["new_x"]) # Now, you read x for sure as int
Alright, so your branch has a bool as data-type. The solution (for now) is simply casting the branch to another fundamental type such as int. This may also increase the throughput for the read-out!
A little bit more background on this issue: The C++ container for an array of bool is a std::vector<bool>. As you can see here, the container is specialized so that you can story 8 booleans in 1 byte. That’s nice (memory-wise) but is horrible for memory adoption since a numpy.array(dtype="bool") has one boolean per byte. So unfortunately we have to copy to go from C++ to Python. Or you cast the boolean on the C++ side to an integer