Home > Enterprise >  How to combine multiple rows into one column with pandas?
How to combine multiple rows into one column with pandas?

Time:04-11

I have a pandas dataframe with the following content (X represents some value)

personal id time point label
1 1 X
. . .
1 12 X
2 400 X
. . .
2 411 X

Basically, for every person, I have labels for 12 consecutive time entries (not always from 1 to 12). What I want is the following form

personal id label (first time point) label (seconde time point) ... label (twelfth time point)
1 X X ... X
2 X X ... X

How can I achieve this? Since I want to ignore the time point numbers and only want the twelve labels next to each other, pivot tables doesn't seem to do the job.

CodePudding user response:

Use GroupBy.cumcount for counter by personal id and then use DataFrame.pivot:

df = df.assign(g = df.groupby('personal id').cumcount()).pivot('personal id','g','label')
  • Related