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

316
Views
En pandas, ¿cómo pivotar un marco de datos en una serie categórica con categorías faltantes?

Tengo un marco de datos de pandas con una serie categórica a la que le faltan categorías.

En el ejemplo que se muestra a continuación, el group tiene las categorías "a" , "b" y "c" , pero no hay casos de "c" en el marco de datos.

 import pandas as pd dfr = pd.DataFrame({ "id": ["111", "222", "111", "333"], "group": ["a", "a", "b", "b"], "value": [1, 4, 9, 16]}) dfr["group"] = pd.Categorical(dfr["group"], categories=["a", "b", "c"]) dfr.pivot(index="id", columns="group")

El marco de datos pivotado resultante tiene columnas a y b . También esperaba una columna c que contuviera todos los valores faltantes.

 value group ab id 111 1.0 9.0 222 4.0 NaN 333 NaN 16.0

¿Cómo puedo girar un marco de datos en una serie categórica para incluir columnas con todas las categorías, independientemente de si estaban presentes en el marco de datos original?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

pd.pivot_table tiene un argumento dropna que dicta descartar o no valorar columnas llenas de NaN.

Intente establecerlo en False :

 import pandas as pd dfr = pd.DataFrame({ "id": ["111", "222", "111", "333"], "group": ["a", "a", "b", "b"], "value": [1, 4, 9, 16]}) dfr["group"] = pd.Categorical(dfr["group"], categories=["a", "b", "c"]) pd.pivot_table(dfr, index="id", columns="group", dropna=False)
over 4 years ago · Santiago Trujillo Report

0

Puedes reindex . Esto funcionará incluso si su columna de value no es numérica (a diferencia pivot_table ):

 output = (dfr.pivot(index="id", columns="group") .reindex(columns=pd.MultiIndex.from_product([["value"], dfr["group"].cat.categories] ) ) ) >>> output value abc id 111 1.0 9.0 NaN 222 4.0 NaN NaN 333 NaN 16.0 NaN
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!