Как объединить несколько строк в одну строку, добавив столбцы с помощью pandas?

#python #pandas

#python #pandas

Вопрос:

Мне нужно объединить несколько строк в одну строку с pandas, в зависимости от хэша столбца

Просмотр моего фрейма данных:

     hash     a      b
0     1      1      6
1     1      2      7
2     1      3      8
3     2      4      9 
4     2      5      10
  

Я хочу, чтобы фрейм данных был преобразован следующим образом:

    hash     a      a1     a3     b     b1     b2  
0    1      1      2      3      6     7      8   
1    2      4      5      nan    9     10     nan 
  

Я пытался использовать некоторый код, связанный с groupby, или транспонировать весь фрейм данных, но не могу понять, как это сделать. Кто-нибудь может мне помочь?

Ответ №1:

Создайте MultiIndex set_index с помощью счетчика столбцов cumcount , измените unstack форму и сгладьте Multiindex map с помощью join :

 df1 = df.set_index(['hash', df.groupby('hash').cumcount().add(1).astype(str)]).unstack()
df1.columns = df1.columns.map(''.join)
df1 = df1.reset_index()
print (df1)
   hash   a1   a2   a3   b1    b2   b3
0     1  1.0  2.0  3.0  6.0   7.0  8.0
1     2  4.0  5.0  NaN  9.0  10.0  NaN