applying formats using fetch or to_frame makes all DataFrame columns objects

Abierto
#147 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
pandas, python
Área
data

Línea de trabajo

Start by reproducing the behavior with tbl.to_frame(format=True) using the cars example and inspect the resulting SASDataFrame dtypes. Trace the formatting path used by to_frame or fetch, then add coverage showing that only formatted columns become objects while unformatted numeric columns retain numeric types.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

If you have formats on only a few columns in a CAS table and try to apply the formats to the SASDataFrame, the swat package converts all columns to objects, even if the column is a simple number.

For example:

Packages

import swat
import pandas as pd

Connect to CAS

conn = ##connection info

load data to CAS

data = r'https://support.sas.com/documentation/onlinedoc/viya/exampledatasets/cars.csv'
tbl = conn.upload_file(data,
casout = {'name':'cars_upload', 'caslib':'casuser','replace':True},
importoptions={
'stripBlanks':True,
'guessRows':200,
'vars':{
'MSRP':{'format':'dollar16.'},
'Weight':{'format':'comma16.'}
}})

Only the MSRP and Weight columns have a format

tbl.columnInfo()

image

Pull the CAS table to the client as a SASDataFrame and apply the formats. This works as expected

df = tbl.to_frame(format=True)
df.head()

image

View the data types of the SASDataFrame

image

Everything turns into an object. It seems like only the formatted columns should be converted. Numeric columns without formats should remain numbers.

Lenguaje dominante
Python
Estrellas
159
Forks
66
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de sassoftware/python-swat

Todos los issues de sassoftware/python-swat

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.