Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

302
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!