DataFrame.values' doc mentions type promotion but leaves out that when uint64 is mixed with signed int types, the return type is int64, which can be surprising. Perhaps consider returning dtype(object) in internals._interleaved_dtype when uint64 and signed ints are present?