pandas - 如何对熊猫中的独特项目进行累计总和?
问题描述
我有一个包含日期级别数据的 pandas df 和
df
MONTH_YEAR class id accnt_id
2012-01 fruits 1 an
2012-01 fruits 2 abc
2012-01 fruits 1 def
2012-02 fruits 2 abc
2012-02 fruits 2 andi
2011-01 vege 1 an
等等..
当前查询:
df.groupby(['class', 'MONTH_YEAR']).agg({'id': 'nunique', 'accnt_id': 'nunique'})
需要输出为:
class MONTH_YEAR id accnt_id cumsum_unique_id
fruits 2012-01 2 3 3
fruits 2012-02 1 2 4
vege 2011-01 1 1 1
如何获得 cumsum_unique_id?
解决方案
你需要多一步才能得到cumsum_unique_id
s=df.groupby(['class', 'MONTH_YEAR']).agg({'id': 'nunique', 'accnt_id': 'nunique'})
s1=df.drop_duplicates(['class','accnt_id']).\
groupby(['class', 'MONTH_YEAR']).accnt_id.count().groupby(level=0).cumsum()
s['cumsum_unique_id']=s1
s
Out[39]:
id accnt_id cumsum_unique_id
class MONTH_YEAR
fruits 2012-01 2 3 3
2012-02 1 2 4
vege 2011-01 1 1 1
推荐阅读
- python - 使用 opencv 检测和绘制轮廓
- java - 与反馈异步运行高计算任务
- import - Magento 2.3.2 仅导入多个产品的图像
- mysql - 在共享主机中导入 MySQL 数据库
- go - 将http响应设置为空白标识符会导致文件处理程序泄漏吗?
- sql - SQL Server:'-'连字符的特定位置的子字符串
- javascript - 角度材料中的预选下拉菜单
- loops - 在块模块上为 Ansible 中的一组任务发出循环
- javascript - 输入评论后出现关键错误。我不知道如何解决(反应问题)
- swift - 通过向左滑动选择 CollectionView 单元格(Swift 5)