Joris Van den Bossche created ARROW-7022:
--------------------------------------------

             Summary: [Python] __arrow_array__ does not work for ExtensionTypes 
in Table.from_pandas
                 Key: ARROW-7022
                 URL: https://issues.apache.org/jira/browse/ARROW-7022
             Project: Apache Arrow
          Issue Type: Bug
          Components: Python
            Reporter: Joris Van den Bossche
             Fix For: 1.0.0


When someone has a custom ExtensionType defined in Python, and an array class 
that gets converted to that (through {{\_\_arrow_array\_\_}}), the conversion 
in pyarrow works with the array class, but not yet for the array stored in a 
pandas DataFrame.

Eg using my definition of ArrowPeriodType in 
https://github.com/pandas-dev/pandas/pull/28371, I see:

{code}
In [15]: pd_array = pd.period_range("2012-01-01", periods=3, freq="D").array    
                                                                                
                                                   

In [16]: pd_array                                                               
                                                                                
                                                   
Out[16]: 
<PeriodArray>
['2012-01-01', '2012-01-02', '2012-01-03']
Length: 3, dtype: period[D]

In [17]: pa.array(pd_array)                                                     
                                                                                
                                                   
Out[17]: 
<pyarrow.lib.ExtensionArray object at 0x7f657cf78768>
[
  15340,
  15341,
  15342
]

In [18]: df = pd.DataFrame({'periods': pd_array})                               
                                                                                
                                                   

In [19]: pa.table(df)                                                           
                                                                                
                                                   
...
ArrowInvalid: ('Could not convert 2012-01-01 with type Period: did not 
recognize Python value type when inferring an Arrow data type', 'Conversion 
failed for column periods with type period[D]')
{code}

(this is working correctly for array objects whose {{\_\_arrow_array\_\_}} is 
returning a built-in pyarrow Array).



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

Reply via email to