tutorial tablas recorrer notebook libreria hacer graficar español documentacion datos data con como cargar python pandas

python - tablas - cómo verificar el tipo de una columna en pandas pitón



recorrer data frame pandas (4)

Necesito usar diferentes funciones para tratar columnas numéricas y columnas de cadenas. Lo que estoy haciendo ahora es realmente tonto:

allc = list((agg.loc[:, (agg.dtypes==np.float64)|(agg.dtypes==np.int)]).columns) for y in allc: treat_numeric(agg[y]) allc = list((agg.loc[:, (agg.dtypes!=np.float64)&(agg.dtypes!=np.int)]).columns) for y in allc: treat_str(agg[y])

¿Hay una manera más elegante de hacer esto? P.ej

for y in agg.columns: if(dtype(agg[y]) == ''string''): treat_str(agg[y]) elif(dtype(agg[y]) != ''string''): treat_numeric(agg[y])


En pandas 0.20.2 puedes hacer:

from pandas.api.types import is_string_dtype from pandas.api.types import is_numeric_dtype is_string_dtype(df[''A'']) >>>> True is_numeric_dtype(df[''B'']) >>>> True

Entonces tu código se convierte en:

for y in agg.columns: if (is_string_dtype(agg[y])): treat_str(agg[y]) elif (is_numeric_dtype(agg[y])): treat_numeric(agg[y])


Puede acceder al tipo de datos de una columna con dtype :

for y in agg.columns: if(agg[y].dtype == np.float64 or agg[y].dtype == np.int64): treat_numeric(agg[y]) else: treat_str(agg[y])



Si desea marcar el tipo de una columna de marco de datos como una cadena, puede hacer:

df[''A''].dtype.kind

Un ejemplo:

In [8]: df = pd.DataFrame([[1,''a'',1.2],[2,''b'',2.3]]) In [9]: df[0].dtype.kind, df[1].dtype.kind, df[2].dtype.kind Out[9]: (''i'', ''O'', ''f'')

La respuesta para tu código:

for y in agg.columns: if(agg[y].dtype.kind == ''f'' or agg[y].dtype.kind == ''i''): treat_numeric(agg[y]) else: treat_str(agg[y])