这是我数据框中的示例行:
{
"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”的行的正确方法是什么?
最佳答案
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())
关于python - 比较GroupBy中的值并计算匹配的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56409222/