Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

201
Visualizações
¿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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda