jorisvandenbossche commented on a change in pull request #10101:
URL: https://github.com/apache/arrow/pull/10101#discussion_r616751489
##########
File path: python/pyarrow/array.pxi
##########
@@ -1170,7 +1170,13 @@ cdef class Array(_PandasConvertible):
array = PyObject_to_object(out)
if isinstance(array, dict):
- array = np.take(array['dictionary'], array['indices'])
+ if zero_copy_only or not self.null_count:
+ # zero_copy doesn't allow for nulls to be in the array
+ array = np.take(array['dictionary'], array['indices'])
+ else:
+ missings = array["indices"] < 0
+ array = np.take(array['dictionary'], array['indices'])
+ array[missings] = np.NaN
Review comment:
> So it seems that for `DictionaryArray` we already used `NaN`, not
`None`, which lead to the reason why I used `NaN`.
That's actually the result of pandas' conversion of Categorical to a list,
so not controlled by pyarrow.
For `DictionaryArray.to_pandas` we return a pandas categorical dtype, which
natively supports missing values (using -1 in the codes). So for this part, the
`None` vs `NaN` is not relevant (outside of our control)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]