python - Pandas DataFrame 基于布尔条件的分组选择列
问题描述
我想通过唯一的列名对数据框进行分组,并为每个组计算另一列,但前提是满足第三列的条件:
这将是三列:
df = pd.DataFrame({'col1':['a','b','b'], 'col2':['c1', 'c2', 'c3'], 'col3':[20,10,20]})
ToDo: count col2 for grouped by col1 if col3 == 20
我设法分 3 步完成:
df = df.set_index(['col1'])
df = df.loc[df['col3']==20,'col2']
df.groupby(level=0).count().idxmax()
但我想知道是否可以在一行中使用 lambda 表达式来做到这一点:)
解决方案
您可以先过滤,然后分组和计数:
df[df['col3']==20].groupby('col1')['col2'].count()
推荐阅读
- swift - Xcode NSStatusBar 项目未出现
- java - 电子商务网络服务和支付网关之间的通信
- python - Visual Studio 代码调试器不显示绘图
- r - 正则表达式删除以字符串开头的单词
- java - setText doesn't work properly if the string starts with a negative sign
- javascript - 将 RestSharp Reqest AddParameter 转换为 POST 请求的 JavaScript 数据
- assembly - AVR 字节存储
- multithreading - 多核架构 VS 多线程
- javascript - Javascript 引用索引之类的枚举、重构
- node.js - InputException 发生在 GetStream.io 中,当尝试为 NodeJS 的活动表单添加反应时