Преобразование вертикальных значений в горизонтальном фрейме данных panda

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

В настоящее время у меня есть фрейм данных, который выглядит следующим образом

 DATE        ID      CHANGE
05-05-2020   333333      10
05-05-2020   333334       2
05-05-2020   333335       8
05-06-2020   333333      -2
05-06-2020   333334       4
05-06-2020   333335       5
  

и я хочу иметь возможность конвертировать этот фрейм данных по горизонтали по дате и разделять идентификатором либо

   DATE        ID      CHANGE      ID      CHANGE       ID      CHANGE
05-05-2020   333333      10      333334       2       333335       8       
05-06-2020   333333      -2      333334       4       333335       5  
  

или

  DATE     333333_CHANGE     333334_CHANGE     333335_CHANGE
05-05-2020       10                 2                 8
05-06-2020       -2                 4                 5    
  

Я предполагаю, что вам нужно сделать какой-то df.groupby() or pd.concat() , хотя чтение документации для них также приводит меня в замешательство.

Ответ №1:

Если возможно, вывод # 2 лучше, потому что повторяющиеся имена столбцов могут привести к множеству различных проблем в выводе # 1.

Для вывода # 2 используйте .unstack() , а затем выполните некоторую очистку столбцов с несколькими индексами для лучшего формата:

 df = df.set_index(['DATE', 'ID']).unstack(1).add_suffix('_CHANGE')
df.columns = df.columns.droplevel()
df = df.reset_index()
df
Out[1]: 
ID        DATE  333333_CHANGE  333334_CHANGE  333335_CHANGE
0   05-05-2020             10              2              8
1   05-06-2020             -2              4              5