0

I have a df:

import pandas as pd

data = {"id":[1,1,1],
        "question": ["What is your name", "What is your age", "Where do you live"],
        "answer": ["Eric", "50", "Sweden"]}
df = pd.DataFrame(data)
  # id           question  answer
  #  1  What is your name    Eric
  #  1   What is your age      50
  #  1  Where do you live  Sweden

I want one row per id, with each question and answer as columns:

# id   question1            answer1       question2            answer2       question3            answer3
# 1    "What is your name"  "Eric"        "What is your age"    50           "Where do you live"  "Sweden"

I've tried different combinations of pivot but I cant get it right

piv = df.pivot(index="id",columns="question").reset_index()
piv.columns = piv.columns.droplevel(1)
  # id answer answer  answer
  #  1     50   Eric  Sweden
BERA
  • 1,345
  • 3
  • 16
  • 36
  • 1
    `piv = df.assign(n=df.groupby('id').cumcount().add(1)).pivot(index='id', columns='n') ; piv.columns = piv.columns.map(lambda x: f'{x[0]}_{x[1]}')` – mozway Apr 12 '23 at 12:19

0 Answers0