为了账号安全,请及时绑定邮箱和手机立即绑定

多列条件计数,同时聚合时间列(python 的数据帧)上的值和发生总数的百分比

多列条件计数,同时聚合时间列(python 的数据帧)上的值和发生总数的百分比

桃花长相依 2021-10-10 16:26:24
这是一个棘手的问题,我将直接用一个例子来解释它假设我们有这个数据框ID Week  Alarm1   Alarm20   1    false    false1   1     true    false2   1    false    true4   2    false    false5   2     true    true6   2    false    true7   2    false    true8   3     true    true9   3     true    true现在我想按周汇总它们,保留列 alarm1 和 alarm2 并计算那些为真的:Week Alarm1 Alarm2 1     1      1 2     1      3 3     2      2 尝试了一些类似的东西:data.groupby(["week","Alarm1","Alarm2"]).size()但正如预期的那样,我只得到一张包含所有可能的假/真选项的表格)额外的问题:如果现在我想要 % 怎么办?第 3 周的总行数较少,因此我希望这些警报的权重更大。我很想将每个值动态除以每周的总行数以获得如下结果:Week Alarm1 Alarm2 1    0.33   0.33 2    0.25   0.75 3     1       1 
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

对于第一部分:(如果 ID 不是列,则忽略放置并继续执行其余代码)


>>df.drop('ID',axis=1).replace({True:1, False:0}).groupby('Week').sum().reset_index()

    Week    Alarm1  Alarm2

0   1       1       1

1   2       1       3

2   3       2       2

对于第二部分:


df.groupby('Week')['Alarm1','Alarm2'].apply(lambda x: x.sum()/x.count()).reset_index()


    Week    Alarm1  Alarm2

0   1   0.333333    0.333333

1   2   0.250000    0.750000

2   3   1.000000    1.000000


查看完整回答
反对 回复 2021-10-10
?
富国沪深

TA贡献1790条经验 获得超9个赞

只是这样做:

data.groupby('Week').sum()

获取真值的个数(记住 True=1, False=0)。

要获得百分比,只需执行以下操作:

data.groupby('week').sum()/data.groupby('week').count()


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信