Как применить функцию stack () к объекту Pandas groupby - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь оптимизировать время выполнения при применении функциональности stack ().

Initial Dataframe 

  ID   SCORE1  SCORE2  YEAR
0 1111  3        4     2019
1 1111  NaN      3     2019
2 1111  5        4     2019
3 2222  6        7     2019
4 2222  2        NaN   2019
5 3333  NaN        9   2019
6 3333  4        NaN   2019
7 4444  NaN      NaN   2019
8 4444  5        6     2019

Эта groupby.apply () ниже сработала.

Но, для большого набора данных это навсегда (3 миллиона записей = 25 минут)

var = df.groupby('ID').apply(lambda x: x.iloc[:, 1:3].stack())

Output Achieved

  ID  
 1111 0  SCORE1 3
         SCORE2 4
      1  SCORE2 3
      2  SCORE1 5
         SCORE2 4
2222  3  SCORE1 6
         SCORE2 7
      4  SCORE1 2 
3333  5  SCORE2 9
      6  SCORE1 4
4444  8  SCORE1 5
         SCORE2 6

Desired output : Same

Как я могу оптимизировать эту производительность?

Могу ли я использовать transform ()?Как ?У него нет вызова stack ()

Цените все ваши идеи при передаче таких сценариев

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете сделать с melt, и я не думаю, что grouby необходимо здесь

df.drop('YEAR',1).melt('ID').dropna()


df.set_index('ID').drop('YEAR',1).stack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...