这是我数据框中的示例行:
{
"sessionId" : "454ec8b8-7f00-40b2-901c-724c5d9f5a91",
"useCaseId" : "3652b5d7-55b8-4bee-82b6-ab32d5543352",
"timestamp" : "1559403699899",
"endFlow" : "true"
}
大约有100列这样的行,它们具有相似/不同的'sessionId','useCaseId'和'endFlow'值。我按“ sessionId”和“ useCaseId”将其分组,如下所示:
groupby_session_usecase = seperate_dates_df.groupby(['sessionId','useCaseId'])
在“ groupby_session_usecase”的组中,我想查找是否有任何行的“ endFlow”值为“ true”。我尝试了以下方法:
'true' in groupby_session_usecase['endFlow']
但是,即使有“ endFlow”值等于“ true”,上一行也始终返回“ False”
检查“ groupby_session_usecase”中的组中是否有“ endFlow”值等于“ true”的行的正确方法是什么?
答案 0 :(得分:1)
OP写道:
“我必须基于'sessionId'和'endFlow = true'进行计数 “ useCaseId”。知道如何达到此要求吗?”
是的,您要做的就是首先比较行,然后使用SeriesGroupBy.sum()
将结果分组。
(df['endFlow'] == "true").groupby([df['session'], df['useCaseId']]).sum()
或者,您可以将比较分配回df
,这样您的分组就会变得更加简单:
(df.assign(msk=df['endFlow'].eq('true'))
.groupby(['session', 'useCaseId'])['msk']
.sum())