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

358
Views
El comportamiento del marco de datos de los objetos `como tipo (flotante)` es diferente dependiendo de si son listas o matrices

Prefacio esto con la declaración de que yo no haría esto en primer lugar y que me encontré con esto ayudando a un amigo.

Considere el marco de datos df

 df = pd.DataFrame(pd.Series([[1.2]])) df 0 0 [1.2]

Este es un marco de datos de objetos donde los objetos son listas. En el código de mi amigo, tenían:

 df.astype(float)

Que se rompe como esperaba

 ValueError: setting an array element with a sequence.

Sin embargo, si esos valores fueran matrices numpy en su lugar:

 df = pd.DataFrame(pd.Series([np.array([1.2])])) df 0 0 [1.2]

Y probé lo mismo:

 df.astype(float) 0 0 1.2

Es lo suficientemente feliz como para hacer algo y convertir mis matrices de 1 longitud en escalares. ¡Esto se siente muy sucio!

Si en cambio no fueran arreglos de 1 longitud

 df = pd.DataFrame(pd.Series([np.array([1.2, 1.3])])) df 0 0 [1.2, 1.3]

luego se rompe

 ValueError: setting an array element with a sequence.

Pregunta
Por favor, dime que esto es un error y podemos solucionarlo. ¿O alguien puede explicar por qué y en qué mundo esto tiene sentido?


Respuesta a @root
Tienes razón. ¿Esto vale la pena? ¿Esperas/quieres esto?

 a = np.empty((1,), object) a[0] = np.array([1.2]) a.astype(float) array([ 1.2])

Y

 a = np.empty((1,), object) a[0] = np.array([1.2, 1.3]) a.astype(float)
 ValueError: setting an array element with a sequence.
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Esto se debe al valor predeterminado unsafe para el argumento de astype casting En los documentos , la casting de argumentos se describe como tal:

"Controla qué tipo de conversión de datos puede ocurrir. El valor predeterminado es 'inseguro' para compatibilidad con versiones anteriores". (énfasis mío)

Cualquiera de las otras conversiones posibles devuelve un TypeError .

 a = np.empty((1,), object) a[0] = np.array([1.2]) a.astype(float, casting='same_kind')

Resultados en:

 TypeError: Cannot cast array from dtype('O') to dtype('float64') according to the rule 'same_kind'

Esto es cierto para todas las conversiones excepto para unsafe , a saber: no , equiv , safe y same_kind .

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!