You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2018/07/08 14:14:27 UTC
[arrow] branch master updated: ARROW-1454: [Python] Also match
ArrowNotImplementedError in unsupported type conversions from pandas
This is an automated email from the ASF dual-hosted git repository.
wesm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 528cb7d ARROW-1454: [Python] Also match ArrowNotImplementedError in unsupported type conversions from pandas
528cb7d is described below
commit 528cb7da95072d26909b006cb1899479313e3c67
Author: Wes McKinney <we...@apache.org>
AuthorDate: Sun Jul 8 10:14:22 2018 -0400
ARROW-1454: [Python] Also match ArrowNotImplementedError in unsupported type conversions from pandas
Unsupported conversions were bubbling up to pandas users in an unfriendly way. Now we have:
```
In [1]: paste
import pandas as pd
import numpy as np
import pyarrow as pa
df = pd.DataFrame({
't1': pd.date_range('2000-01-01', periods=20),
't2': pd.date_range('2000-05-01', periods=20)
})
df['diff'] = df.t2 - df.t1
pa.Table.from_pandas(df)
## -- End pasted text --
<SNIP>
~/code/arrow/python/pyarrow/error.pxi in pyarrow.lib.check_status()
87 raise ArrowKeyError(message)
88 elif status.IsNotImplemented():
---> 89 raise ArrowNotImplementedError(message)
90 elif status.IsTypeError():
91 raise ArrowTypeError(message)
ArrowNotImplementedError: ('Unsupported numpy type 22\n', 'Conversion failed for column diff with type timedelta64[ns]')
```
Author: Wes McKinney <we...@apache.org>
Closes #2227 from wesm/ARROW-1454 and squashes the following commits:
673eb9cf <Wes McKinney> Also match ArrowNotImplementedError in unsupported type conversions from pandas
---
python/pyarrow/pandas_compat.py | 7 +++++--
python/pyarrow/tests/test_convert_pandas.py | 16 ++++++++++++++++
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/python/pyarrow/pandas_compat.py b/python/pyarrow/pandas_compat.py
index aabe2bb..5ba1702 100644
--- a/python/pyarrow/pandas_compat.py
+++ b/python/pyarrow/pandas_compat.py
@@ -367,8 +367,11 @@ def dataframe_to_arrays(df, schema, preserve_index, nthreads=1, columns=None):
def convert_column(col, ty):
try:
return pa.array(col, from_pandas=True, type=ty)
- except (pa.ArrowInvalid, pa.ArrowTypeError) as e:
- e.args += ("Conversion failed for column %s" % col.name,)
+ except (pa.ArrowInvalid,
+ pa.ArrowNotImplementedError,
+ pa.ArrowTypeError) as e:
+ e.args += ("Conversion failed for column {0!s} with type {1!s}"
+ .format(col.name, col.dtype),)
raise e
if nthreads == 1:
diff --git a/python/pyarrow/tests/test_convert_pandas.py b/python/pyarrow/tests/test_convert_pandas.py
index 3b2a50c..19ffb25 100644
--- a/python/pyarrow/tests/test_convert_pandas.py
+++ b/python/pyarrow/tests/test_convert_pandas.py
@@ -2084,3 +2084,19 @@ def _pytime_to_micros(pytime):
pytime.minute * 60000000 +
pytime.second * 1000000 +
pytime.microsecond)
+
+
+def test_convert_unsupported_type_error_message():
+ # ARROW-1454
+
+ df = pd.DataFrame({
+ 't1': pd.date_range('2000-01-01', periods=20),
+ 't2': pd.date_range('2000-05-01', periods=20)
+ })
+
+ # timedelta64 as yet unsupported
+ df['diff'] = df.t2 - df.t1
+
+ expected_msg = 'Conversion failed for column diff with type timedelta64'
+ with pytest.raises(pa.ArrowNotImplementedError, match=expected_msg):
+ pa.Table.from_pandas(df)