python - 比较 GroupBy 中的值并计算匹配的行数
问题描述
这是我的数据框中的示例行:
{
"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'和'useCaseId'计算'endFlow = true'。知道如何实现这个要求吗?”
是的,您所要做的就是先比较行,然后使用SeriesGroupBy.sum()
.
(df['endFlow'] == "true").groupby([df['session'], df['useCaseId']]).sum()
或者,您可以将比较分配回df
,然后您的分组会变得稍微简单一些:
(df.assign(msk=df['endFlow'].eq('true'))
.groupby(['session', 'useCaseId'])['msk']
.sum())
推荐阅读
- r - 如何在ggplot中重命名图形图例?aes 给出长度错误
- sql - 如果满足条件,INSTEAD OF DELETE 触发器可防止删除
- c++ - NvAPI_DISP_GetMonitorCapabilities 返回 NVAPI_INCOMPATIBLE_STRUCT_VERSION
- visual-studio - GameObject 不使用 TwoHandManipulatable 旋转,也不使用 Unity 和 HoloLens 旋转 BoundingBoxRig
- swift - 从自定义 UIView 类设置视图宽度约束不更新帧
- google-apps-script - 当某个范围的单元格内发生变化时需要触发运行
- html - Google 不断将我的字体更改为 Helvetica 我需要做什么?
- mysql - SoapUI DataSource -> SQL Query 中的垃圾字符,如何处理?
- javascript - 如何将我的功能应用于多个元素?
- node.js - 无法使用 coinbase pro api 检索某些信息(订单历史、交易账户)