[ 
https://issues.apache.org/jira/browse/ARROW-10147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wes McKinney resolved ARROW-10147.
----------------------------------
    Resolution: Fixed

Issue resolved by pull request 8314
[https://github.com/apache/arrow/pull/8314]

> [Python] Constructing pandas metadata fails if an Index name is not 
> JSON-serializable by default
> ------------------------------------------------------------------------------------------------
>
>                 Key: ARROW-10147
>                 URL: https://issues.apache.org/jira/browse/ARROW-10147
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>            Reporter: Wes McKinney
>            Assignee: Diana Clarke
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.0.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> originally reported in https://github.com/apache/arrow/issues/8270
> here's a minimal reproduction:
> {code}
> In [24]: idx = pd.RangeIndex(0, 4, name=np.int64(6))                          
>                      
> In [25]: df = pd.DataFrame(index=idx)                                         
>                      
> In [26]: pa.table(df)                                                         
>                      
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call last)
> <ipython-input-26-957dcd80b415> in <module>
> ----> 1 pa.table(df)
> ~/code/arrow/python/pyarrow/table.pxi in pyarrow.lib.table()
> ~/code/arrow/python/pyarrow/table.pxi in pyarrow.lib.Table.from_pandas()
> ~/code/arrow/python/pyarrow/pandas_compat.py in dataframe_to_arrays(df, 
> schema, preserve_index, nthreads, columns, safe)
>     604     pandas_metadata = construct_metadata(df, column_names, 
> index_columns,
>     605                                          index_descriptors, 
> preserve_index,
> --> 606                                          types)
>     607     metadata = deepcopy(schema.metadata) if schema.metadata else 
> dict()
>     608     metadata.update(pandas_metadata)
> ~/code/arrow/python/pyarrow/pandas_compat.py in construct_metadata(df, 
> column_names, index_levels, index_descriptors, preserve_index, types)
>     243                 'version': pa.__version__
>     244             },
> --> 245             'pandas_version': _pandas_api.version
>     246         }).encode('utf8')
>     247     }
> ~/miniconda/envs/arrow-3.7/lib/python3.7/json/__init__.py in dumps(obj, 
> skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, 
> default, sort_keys, **kw)
>     229         cls is None and indent is None and separators is None and
>     230         default is None and not sort_keys and not kw):
> --> 231         return _default_encoder.encode(obj)
>     232     if cls is None:
>     233         cls = JSONEncoder
> ~/miniconda/envs/arrow-3.7/lib/python3.7/json/encoder.py in encode(self, o)
>     197         # exceptions aren't as detailed.  The list call should be 
> roughly
>     198         # equivalent to the PySequence_Fast that ''.join() would do.
> --> 199         chunks = self.iterencode(o, _one_shot=True)
>     200         if not isinstance(chunks, (list, tuple)):
>     201             chunks = list(chunks)
> ~/miniconda/envs/arrow-3.7/lib/python3.7/json/encoder.py in iterencode(self, 
> o, _one_shot)
>     255                 self.key_separator, self.item_separator, 
> self.sort_keys,
>     256                 self.skipkeys, _one_shot)
> --> 257         return _iterencode(o, 0)
>     258 
>     259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
> ~/miniconda/envs/arrow-3.7/lib/python3.7/json/encoder.py in default(self, o)
>     177 
>     178         """
> --> 179         raise TypeError(f'Object of type {o.__class__.__name__} '
>     180                         f'is not JSON serializable')
>     181 
> TypeError: Object of type int64 is not JSON serializable
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to