Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
Python: compruebe si la columna del marco de datos contiene un tipo de cadena

Quiero verificar si las columnas en un marco de datos consisten en cadenas para poder etiquetarlas con números con fines de aprendizaje automático. Algunas columnas consisten en números, no quiero cambiarlos. El ejemplo de columnas se puede ver a continuación:

 TRAIN FEATURES Age Level 32.0 Silver 61.0 Silver 66.0 Silver 36.0 Gold 20.0 Silver 29.0 Silver 46.0 Silver 27.0 Silver

gracias =)

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Tenga en cuenta que las respuestas anteriores incluirán DateTime, TimeStamp, Category y otros tipos de datos.

Usar object es más restrictivo (aunque no estoy seguro de si otros dtypes también serían de object dtype):

  1. Crear el marco de datos:

     df = pd.DataFrame({ 'a': ['a','b','c','d'], 'b': [1, 'b', 'c', 2], 'c': [np.nan, 2, 3, 4], 'd': ['A', 'B', 'B', 'A'], 'e': pd.to_datetime('today')}) df['d'] = df['d'].astype('category')

Eso se verá así:

 abcde 0 a 1 NaN A 2018-05-17 1 bb 2.0 B 2018-05-17 2 cc 3.0 B 2018-05-17 3 d 2 4.0 A 2018-05-17
  1. Puede verificar los tipos llamando a dtypes :

     df.dtypes a object b object c float64 d category e datetime64[ns] dtype: object
  2. Puede enumerar las columnas de cadenas utilizando el método items() y filtrando por object :

     > [ col for col, dt in df.dtypes.items() if dt == object] ['a', 'b']
  3. O puede usar select_dtypes para mostrar un marco de datos con solo las cadenas:

     df.select_dtypes(include=[object]) ab 0 a 1 1 bb 2 cc 3 d 2
over 4 years ago · Santiago Trujillo Denunciar

0

Si es posible. usas dtype

 import pandas as pd import numpy as np df = pd.DataFrame({'a': ['a','b','c','d']}) if df['a'].dtype != np.number: print('yes') else: print('no')

También puede seleccionar sus columnas por tipo de d usando select_dtypes

 df_subset = df.select_dtypes(exclude=[np.number]) # Now apply you can label encode your df_subset
over 4 years ago · Santiago Trujillo Denunciar

0

4 años desde la creación de esta pregunta y creo que todavía no hay una respuesta definitiva.

No creo que las cadenas hayan sido consideradas ciudadanos de primera clase en Pandas (incluso >= 1.0.0). Como ejemplo:

 import pandas as pd import datetime df = pd.DataFrame({ 'str': ['a', 'b', 'c', None], 'hete': [1, 2.0, datetime.datetime.utcnow(), None] }) string_series = df['str'] print(string_series.dtype) print(pd.api.types.is_string_dtype(string_series.dtype)) heterogenous_series = df['hete'] print(heterogenous_series.dtype) print(pd.api.types.is_string_dtype(heterogenous_series.dtype))

huellas dactilares

 object True object True

por lo tanto, aunque hete no contiene cadenas explícitas, se considera una serie de cadenas.

Después de leer la documentación , creo que la única forma de asegurarse de que una serie contenga solo cadenas es:

 def is_string_series(s : pd.Series): if isinstance(s.dtype, pd.StringDtype): # The series was explicitly created as a string series (Pandas>=1.0.0) return True elif s.dtype == 'object': # Object series, check each value return all((v is None) or isinstance(v, str) for v in s) else: return False
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda