Панды устанавливают начало и конец на основе последовательной категории - PullRequest
0 голосов
/ 19 ноября 2018

Итак, есть похожие вопросы о переполнении стека, но ни один из них не решает этого, и я не могу понять это.У меня есть пандас DataFrame, который выглядит следующим образом:

Account     Size
------------------
11120011     0
11130212     0
21023123     1
22109832     2
28891902     2
33390909     0
34123495     0
34490909     0

И для всех учетных записей, которые имеют размер == 0, я хотел бы свернуть их так:

 Account Start     Size     Account End
 ---------------------------------------
 11120011           0        11130212     
 21023123           1        21023123   
 22109832           2        22109832
 28891902           2        28891902     
 33390909           0        34490909   

Счета с размером! = 0 могут просто повторяться в обоих столбцах, но для счетов с размером = 0 я просто хотел бы сохранить начало и конец этого конкретного сегмента.DF уже отсортирован в учетной записи.

Помощь приветствуется.Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Поздно на вечеринку, но я думаю, что это тоже работает.

df['Account End'] = df.shift(-1)[(df.Size == 0)]['Account']

Все еще на этапе обучения панд, если это плохо по какой-либо причине, дайте мне знать. Спасибо.

0 голосов
/ 19 ноября 2018

IIUC, используя diff + cumsum, создайте ключ группы, затем выполните agg

m1=df.Size.diff().ne(0)
m2=df.Size.ne(0)
df.groupby((m1|m2).cumsum()).agg({'Account':['first','last'],'Size':'first'})
Out[97]: 
      Size   Account          
     first     first      last
Size                          
1        0  11120011  11130212
2        1  21023123  21023123
3        2  22109832  22109832
4        2  28891902  28891902
5        0  33390909  34490909
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...