Esri / Esri/arcgis-python-api

Inconsistent conversion of dataframe to table using GeoAccessor spatial.to_table()

Aperta
#2,410 7 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
2.2k
Fork
1.2k
Merge medio
2h 40m
PR unite (30g)
2

Descrizione

I am using GeoAccessor spatial.to_table() method to convert standard pandas dataframes to geodatabase tables. This previously worked (ArcPro v.2.9) as long as I converted incompatible fields as described in this post: [https://community.esri.com/t5/arcgis-api-for-python-questions/system-error-when-exporting-spatially-enabled/td-p/1044880](https://community.esri.com/t5/arcgis-api-for-python-questions/system-error-when-exporting-spatially-enabled/td-p/1044880)

I'm now on ArcPro v.3.3, and I'm having inconsistent results. Some dataframes are converting to geodatabase tables and some are not, even though the fields causing issues are in both the successfully converted dataframes and the ones that are failing.

Below is a sample traceback -- with the TypeError at the bottom

```
Traceback (most recent call last):
File "d:\abai490\tlt\scripts\tlt_parcel_stats_debug.py", line 696, in
main(parcel_fc, parcelid_field, yields_npv_tbl, yields_blv_tbl, slvmgt_tbl, stumpage_tbl, discount_rates_tbl, out_dir)
File "d:\abai490\tlt\scripts\tlt_parcel_stats_debug.py", line 678, in main
export_npvblv(pcl_df_list, riu_df_list, output_geodatabase, out_dir, timestamp, parcel_file_pfx)
File "d:\abai490\tlt\scripts\tlt_parcel_stats_debug.py", line 588, in export_npvblv
export_table(parcel_npvblv_df, out_gdb, f'{file_pfx}_npv_blv')
File "d:\abai490\tlt\scripts\tlt_parcel_stats_debug.py", line 378, in export_table
mod_df.spatial.to_table(os.path.join(gdb, out_table))
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\arcgis\features\geo\_accessor.py", line 2751, in to_table
table = run_and_hide(
^^^^^^^^^^^^^
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\arcgis\features\geo\_tools\_utils.py", line 30, in run_and_hide
raise err
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\arcgis\features\geo\_tools\_utils.py", line 23, in run_and_hide
res = fn(**kwargs)
^^^^^^^^^^^^
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\Lib\site-packages\arcgis\features\geo\_io\fileops.py", line 617, in to_table
arcpy.da.ExtendTable(fc, oidfld, array, join_dummy, append_only=False)
TypeError: cannot add field: 'parcel_id'
```
I tested this with a standard pandas data frame and a SEDF (with dummy x/y), in the method call and both throw the error. `mod_df.spatial.to_table(os.path.join(gdb, out_table))`

I'm not sure if this is a bug, or a request for assistance. I am definitely puzzled by the fact that it worked previously and now it works inconsistently. Thanks for any suggestions for resolving this issue.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da GeoAccessor.to_table in arcgis/features/geo/_accessor.py e dal percorso fileops.to_table in arcgis/features/geo/_io/fileops.py, concentrandoti sulla chiamata arcpy.da.ExtendTable mostrata nel traceback. Riproduci il problema sia con un DataFrame pandas standard sia con un SEDF, confrontando i DataFrame che hanno esito positivo e quelli che falliscono. Il lavoro è completato quando il comportamento della conversione è coerente e il parcel_id TypeError è stato risolto o chiaramente caratterizzato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
pandas, python
Ambito
data, database
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.