这是我的数据框
Date Name Attempt Count
0 2015-01-02 Adam Yes
1 2015-01-29 Adam Yes
2 2015-02-02 David No
3 2015-03-02 David Yes
4 2015-03-02 Hardik Yes
5 2015-03-02 David No
现在我需要计算一个人每月的尝试次数。仅当尝试值为“是”时才要计数,并在“计数”列中插入该值
这是预期的输出
Date Name Attempt Count
0 2015-01-02 Adam Yes 2
1 2015-01-29 Adam Yes 2
2 2015-02-02 David No 0
3 2015-03-02 David Yes 1
4 2015-03-02 Hardik Yes 1
5 2015-03-02 David No 1
您需要将日期和姓名按月份频率分组,并计算有多少次尝试是“是”。添加一点临时助手信息作为唯一月份:
res
看起来像这样(多索引为('year\u x\u month','Name'):现在,使用年/月和人名的唯一组合图,分配每人和每月的尝试次数:
输出:
注意:删除了以前有缺陷的实施
在看到@ThePyGuy给出的漂亮答案后。我对检查他和我的建议的性能很感兴趣(我希望没有一个比另一个更“正确”),并发现他的建议需要4.53毫秒,我的建议需要3.97毫秒。请注意,这些统计数据是针对这个小数据集的。性能可能会随着数据帧的大小而奇怪地扩展
如果尚未将
Date
列转换为datetime类型,则将临时列指定为month,从Date
列提取月份值然后为
Attempt
列过滤出具有Yes
值的行,并按month
和Name
列对其进行分组,然后调用size
获取计数,最后调用to_frame
传递count
作为列名来创建一个数据帧,并将其与left
合并并传递on
参数的公共键,然后fillna(0)
,删除月份列,并将计数列转换为整数类型相关问题 更多 >
编程相关推荐