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

499
Vistas
Python: convierta todos los elementos en un marco de datos en cadenas

Seguí el siguiente procedimiento: En Python, ¿cómo convierto todos los elementos de una lista en flotantes? porque cada columna de mi marco de datos es una list , pero en lugar de floats , elegí cambiar todos los valores a strings .

df = [str(i) for i in df]

Pero esto fracasó.

Simplemente borró todos los datos excepto la primera fila de nombres de columna.

Luego, probar df = [str(i) for i in df.values] resultó en cambiar todo el marco de datos en una gran lista, pero eso estropea demasiado los datos para poder cumplir con el objetivo de mi secuencia de comandos, que es exportar el marco de datos a mi tabla de Oracle.

¿Hay alguna manera de convertir todos los elementos que están en mi marco de datos que NO son cadenas en cadenas?

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

0

Puedes usar esto:

 df = df.astype(str)

por curiosidad, decidí ver si hay alguna diferencia en la eficiencia entre la solución aceptada y la mía.

Los resultados están a continuación:

ejemplo df:

 df = pd.DataFrame([list(range(1000))], index=[0])

prueba df.astype :

 %timeit df.astype(str) >> 100 loops, best of 3: 2.18 ms per loop

prueba df.applymap :

 %timeit df.applymap(str) 1 loops, best of 3: 245 ms per loop

Parece que df.astype es mucho más rápido :)

over 4 years ago · Santiago Trujillo Denunciar

0

Puedes usar el método applymap :

 df = df.applymap(str)
over 4 years ago · Santiago Trujillo Denunciar

0

Con pandas >= 1.0 ahora hay un tipo de datos de cadena dedicado:

Puede convertir su columna a este tipo de datos de cadena de pandas usando .astype('string') :

 df = df.astype('string')

Esto es diferente de usar str que establece el tipo de datos 'objeto' de pandas:

 df = df.astype(str)

Puede ver la diferencia en los tipos de datos cuando observa la información del marco de datos:

 df = pd.DataFrame({ 'zipcode_str': [90210, 90211] , 'zipcode_string': [90210, 90211], }) df['zipcode_str'] = df['zipcode_str'].astype(str) df['zipcode_string'] = df['zipcode_str'].astype('string') df.info() # you can see that the first column has dtype object # while the second column has the new dtype string # Column Non-Null Count Dtype --- ------ -------------- ----- 0 zipcode_str 2 non-null object 1 zipcode_string 2 non-null string dtypes: object(1), string(1)


De los documentos:

El tipo de extensión 'string' resuelve varios problemas con las matrices NumPy object-dtype:

1) Puede almacenar accidentalmente una combinación de cadenas y no cadenas en una matriz de tipo de objeto. Un StringArray solo puede almacenar cadenas.

2) object dtype rompe operaciones específicas de dtype como DataFrame.select_dtypes(). No hay una forma clara de seleccionar solo texto mientras se excluyen las columnas que no son de texto, pero que aún son de tipo objeto.

3) Al leer código, el contenido de una matriz de tipo de objeto es menos claro que una cadena.


Puede encontrar información sobre pandas 1.0 aquí:
https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html

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