Python - цикл по пандам объекта Groupby - PullRequest
0 голосов
/ 02 июня 2019

Вот пример строки, которая у меня есть в моем фрейме данных:

{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "3652b5d7-55b8-4bee-82b6-ab32d5543352",
"timestamp" : "1559403699899",
"endFlow" : "true"
}    

Я делаю groupby по 'sessionId', что даст мне такую ​​группу:

Row 1:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "usecaseId1",
"timestamp" : "1559403699899",
"endFlow" : "false"
},
 Row 2:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "usecaseId1",
"timestamp" : "1559403699899",
"endFlow" : "false"
},
Row 3:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "usecaseId2",
"timestamp" : "1559403699899",
"endFlow" : "true"
},
Row 4:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "usecaseId1",
"timestamp" : "1559403699899",
"endFlow" : "false"
},
Row 5:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "usecaseId1",
"timestamp" : "1559403699899",
"endFlow" : "true"
}   

Если взять в качестве примера приведенную выше группу, то здесь я хочу добиться того, чтобы после группировки фрейма данных по 'sessionId' я захотел перебрать последовательные строки с одинаковым 'useCaseId' (Таким образом, из вышеприведенной группы будет три наборапоследовательные строки, по которым я хочу выполнить цикл,
Row1-Row2, Row3, Row4-Row5 )

И из каждого из указанных выше последовательных наборов строк ( Row1-Row2, Row3, Row4-Row5 (где каждый набор имеет один и тот же useCaseId) ,
Я хочу найти число наборов, значение конечного потока строк в которых составляет только false .

Итак, из приведенного выше примера группы ожидаемый результат выглядит следующим образом:
1 (Так как Row1-Row2 с тем же useCaseId 'usecaseId1' имеет только конечный поток 'false', тогда как 'Row3' и 'Row4-Row5 'имеет конечный поток' true ')

Как мне этого добиться?
Наверхдаты:

  1. df.head ():

    sessionId   useCaseId      timestamp endFlow
    0  sessionId1  useCaseId1  1559403699899   false
    1  sessionId1  useCaseId1  1559403699899   false
    2  sessionId1  useCaseId2  1559403699899    true
    3  sessionId1  useCaseId1  1559403699899   false
    4  sessionId1  useCaseId1  1559403699899    true  
    
  2. Что я пробовал:
    Я пробовал группироватьфрейм данных с помощью 'sessionId' и 'usecaseId', но это не сработает, потому что он сгруппирует фрейм данных однозначно с 'usecaseId', а это не то, что я хотел; я хочу перебрать последовательные строки после группировки по 'sessionId' с тем же 'usecaseId ', а затем подсчитать последовательные строки с тем же' useCaseId ', имеющим' endFlow ', только как' false '.

  3. Ожидаемый результат: после группировки по 'sessionId' я хочу посчитать количество последовательных строк с тем же 'useCaseId', имеющим 'endFlow', только как 'false'
    из приведенного выше примера группы ожидаемый результат выглядит следующим образом: 1 (Так как Row1-Row2 с тем же useCaseId 'usecaseId1' имеет только конечный поток 'ложь', в то время как 'Row3' и 'Row4-Row5' имеет конечный поток 'истина'')

1 Ответ

2 голосов
/ 02 июня 2019

Вы можете попробовать это: ( Я предполагаю, что df.endFlow содержит строку 'true' и 'false'. Если она содержит логические True и False, вы просто берете команду replace )что группа с одной строкой также считается группой последовательных строк.Поэтому счет будет включать его, если его endFlow равно False

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...