ASF GitHub Bot commented on ARROW-2432:

BryanCutler commented on a change in pull request #1878: ARROW-2432: [Python] 
Fix Pandas decimal type conversion with None values
URL: https://github.com/apache/arrow/pull/1878#discussion_r180601792

 File path: cpp/src/arrow/python/decimal.cc
 @@ -184,14 +184,15 @@ Status DecimalMetadata::Update(int32_t 
suggested_precision, int32_t suggested_sc
 Status DecimalMetadata::Update(PyObject* object) {
-  DCHECK(PyDecimal_Check(object)) << "Object is not a Python Decimal";
+  bool is_decimal = PyDecimal_Check(object);
 Review comment:
   So you mean remove `PyDecimal_Check` all together?  This is only called when 
the type is not specified by the user and then yes, it will end doing 2 passes 
over the objects and checks both times if they are decimal.  It might be 
possible to do less checks on the second pass if we keep a list of which ones 
are decimal objects, but I'm not sure that would be worth it.

This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:

> [Python] from_pandas fails when converting decimals if have None values
> -----------------------------------------------------------------------
>                 Key: ARROW-2432
>                 URL: https://issues.apache.org/jira/browse/ARROW-2432
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>    Affects Versions: 0.9.0
>            Reporter: Bryan Cutler
>            Assignee: Bryan Cutler
>            Priority: Major
>              Labels: pull-request-available
> Using from_pandas to convert decimals fails if encounters a value of 
> {{None}}. For example:
> {code:java}
> In [1]: import pyarrow as pa
> ...: import pandas as pd
> ...: from decimal import Decimal
> ...:
> In [2]: s_dec = pd.Series([Decimal('3.14'), None])
> In [3]: pa.Array.from_pandas(s_dec, type=pa.decimal128(3, 2))
> ---------------------------------------------------------------------------
> ArrowInvalid Traceback (most recent call last)
> <ipython-input-3-2da56007a0da> in <module>()
> ----> 1 pa.Array.from_pandas(s_dec, type=pa.decimal128(3, 2))
> array.pxi in pyarrow.lib.Array.from_pandas()
> array.pxi in pyarrow.lib.array()
> error.pxi in pyarrow.lib.check_status()
> error.pxi in pyarrow.lib.check_status()
> ArrowInvalid: Error converting from Python objects to Decimal: Got Python 
> object of type NoneType but can only handle these types: decimal.Decimal
> {code}
> The above error is raised when specifying decimal type. When no type is 
> specified, a seg fault happens.
> This previously worked in 0.8.0.

This message was sent by Atlassian JIRA

Reply via email to