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

177
Views
¿Cómo derrito un marco de datos de pandas?

En la etiqueta de pandas , a menudo veo a los usuarios haciendo preguntas sobre la fusión de marcos de datos en pandas. Voy a intentar una sesión de preguntas y respuestas canónicas (auto-respuesta) con este tema.

Voy a aclarar:

  1. ¿Qué es derretir?

  2. ¿Cómo uso el derretimiento?

  3. ¿Cuándo uso melt?

Veo algunas preguntas más candentes sobre el derretimiento, como:

  • Los pandas convierten algunas columnas en filas : esta en realidad podría ser buena, pero sería mejor una explicación más.

  • Función de fusión de pandas : la buena respuesta de la pregunta es buena, pero es un poco vaga, no hay mucha expansión.

  • Fusión de un marco de datos de pandas : ¡también una buena respuesta! Pero es solo para esa situación en particular, que es bastante simple, solo pd.melt(df)

  • El marco de datos de Pandas usa columnas como filas (fundido) : ¡Muy ordenado! Pero el problema es que es solo para la pregunta específica que hizo el OP, que también se requiere para usar pivot_table también.

Así que voy a intentar una sesión de preguntas y respuestas canónicas para este tema.



Conjunto de datos:

Tendré todas mis respuestas en este conjunto de datos de calificaciones aleatorias para personas aleatorias con edades aleatorias (más fácil de explicar para las respuestas: D):

 import pandas as pd df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 'English': ['C', 'B', 'B', 'A+', 'F', 'A'], 'Age': [13, 16, 16, 15, 15, 13]}) >>> df Name Math English Age 0 Bob A+ C 13 1 John BB 16 2 Foo AB 16 3 Bar F A+ 15 4 Alex DF 15 5 Tom CA 13 >>>

Problemas:

Voy a tener algunos problemas y se resolverán en mi auto-respuesta a continuación.

Problema 1:

¿Cómo derrito un marco de datos para que el marco de datos original se convierta en:

 Name Age Subject Grade 0 Bob 13 English C 1 John 16 English B 2 Foo 14 English B 3 Bar 15 English A+ 4 Alex 17 English F 5 Tom 12 English A 6 Bob 13 Math A+ 7 John 16 Math B 8 Foo 14 Math A 9 Bar 15 Math F 10 Alex 17 Math D 11 Tom 12 Math C

Quiero transponer esto para que una columna sea cada materia y las otras columnas sean los nombres repetidos de los estudiantes y su edad y puntuación.

Problema 2:

Esto es similar al Problema 1, pero esta vez quiero hacer que la columna Subject de salida del Problema 1 solo tenga Math , quiero filtrar la columna en English :

 Name Age Subject Grades 0 Bob 13 Math A+ 1 John 16 Math B 2 Foo 16 Math A 3 Bar 15 Math F 4 Alex 15 Math D 5 Tom 13 Math C

Quiero que la salida sea como la anterior.

Problema 3:

Si tuviera que agrupar el derretimiento y ordenar a los estudiantes por sus puntajes, ¿cómo podría hacerlo para obtener el resultado deseado como el siguiente?

 value Name Subjects 0 A Foo, Tom Math, English 1 A+ Bob, Bar Math, English 2 B John, John, Foo Math, English, English 3 C Tom, Bob Math, English 4 D Alex Math 5 F Bar, Alex Math, English

Necesito que este ordenado y los nombres separados por coma y tambien los Subjects separados por coma en el mismo orden respectivamente

Problema 4:

¿Cómo desharía un marco de datos derretido? Digamos que ya derretí este marco de datos:

 print(df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades'))

Convertirse:

 Name Age Subject Grades 0 Bob 13 Math A+ 1 John 16 Math B 2 Foo 16 Math A 3 Bar 15 Math F 4 Alex 15 Math D 5 Tom 13 Math C 6 Bob 13 English C 7 John 16 English B 8 Foo 16 English B 9 Bar 15 English A+ 10 Alex 15 English F 11 Tom 13 English A

Entonces, ¿cómo traduciría esto de nuevo al marco de datos original, el siguiente:

 Name Math English Age 0 Bob A+ C 13 1 John BB 16 2 Foo AB 16 3 Bar F A+ 15 4 Alex DF 15 5 Tom CA 13

¿Cómo haría para hacer esto?

Problema 5:

Si tuviera que agrupar por los nombres de los alumnos y separar las materias y calificaciones por comas, ¿cómo lo haría?

 Name Subject Grades 0 Alex Math, English D, F 1 Bar Math, English F, A+ 2 Bob Math, English A+, C 3 Foo Math, English A, B 4 John Math, English B, B 5 Tom Math, English C, A

Quiero tener un marco de datos como el anterior.

Problema 6:

Si fuera a derretir por completo mi marco de datos, todas las columnas como valores, ¿cómo lo haría?

 Column Value 0 Name Bob 1 Name John 2 Name Foo 3 Name Bar 4 Name Alex 5 Name Tom 6 Math A+ 7 Math B 8 Math A 9 Math F 10 Math D 11 Math C 12 English C 13 English B 14 English B 15 English A+ 16 English F 17 English A 18 Age 13 19 Age 16 20 Age 16 21 Age 15 22 Age 15 23 Age 13

Quiero tener un marco de datos como el anterior. Todas las columnas como valores.

Por favor revise mi auto-respuesta a continuación :)

over 4 years ago · Santiago Trujillo
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!