[ https://issues.apache.org/jira/browse/ARROW-17774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17624677#comment-17624677 ]
Weston Pace commented on ARROW-17774: ------------------------------------- The underlying issues appears to have been solved. I just checked that this indeed works with the CSV writer: {noformat} import decimal import pyarrow as pa import pyarrow.compute as pc import pyarrow.csv as csv decimals = pa.array([decimal.Decimal(1), decimal.Decimal(0.3)]) small_decimals = pc.cast(decimals, pa.decimal256(12, 6), safe=False) table = pa.Table.from_pydict({"rownum": [1, 2], "decimal": small_decimals}) csv.write_csv(table, '/tmp/foo.csv') with open('/tmp/foo.csv') as f: print(f.read()) # "rownum","decimal" # 1,1.000000 # 2,0.299999 {noformat} Do we want to add any pyarrow tests? Or just close this. > [Python] write csv decimal cast error > ------------------------------------- > > Key: ARROW-17774 > URL: https://issues.apache.org/jira/browse/ARROW-17774 > Project: Apache Arrow > Issue Type: Bug > Components: C++ > Affects Versions: 8.0.0 > Reporter: Alejandro Marco Ramos > Priority: Major > > Hi, when try to write table with any field in `Decimal128` type, arrow raises > with this message: > {code:java} > In [136]: ds.write_dataset(table, "data", format="csv") > --------------------------------------------------------------------------- > ArrowNotImplementedError Traceback (most recent call last) > Cell In [136], line 1 > ----> 1 ds.write_dataset(table, "data", format="csv") > File > c:\users\documents\projects\.venv\lib\site-packages\pyarrow\dataset.py:930, > in write_dataset(data, base_dir, basename_template, format, partitioning, > partitioning_flavor, schema, filesystem, file_options, use_threads, > max_partitions, max_open_files, max_rows_per_file, min_rows_per_group, > max_rows_per_group, file_visitor, existing_data_behavior, create_dir) > 927 raise ValueError("Cannot specify a schema when writing a > Scanner") > 928 scanner = data > --> 930 _filesystemdataset_write( > 931 scanner, base_dir, basename_template, filesystem, partitioning, > 932 file_options, max_partitions, file_visitor, > existing_data_behavior, > 933 max_open_files, max_rows_per_file, > 934 min_rows_per_group, max_rows_per_group, create_dir > 935 ) > File > c:\users\documents\projects\.venv\lib\site-packages\pyarrow\_dataset.pyx:2737, > in pyarrow._dataset._filesystemdataset_write() > File > c:\users\documents\projects\.venv\lib\site-packages\pyarrow\error.pxi:121, in > pyarrow.lib.check_status() > ArrowNotImplementedError: Unsupported cast from decimal128(21, 15) to utf8 > using function cast_string{code} > my data is: > {noformat} > In [137]: table > Out[137]: > pyarrow.Table > col1: int64 > col2: double > col3: decimal128(21, 15) > col4: string > ---- > col1: [[1,2,3,0]] > col2: [[2.7,0,3.24,3]] > col3: [[-304236.460000000000000,0.E-15,0.E-15,0.E-15]] > col4: [["primera","segunda","tercera","cuarta"]]{noformat} > > Thanks in advance. -- This message was sent by Atlassian Jira (v8.20.10#820010)