这是一个棘手的问题,我将直接用一个例子来解释它假设我们有这个数据框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
富国沪深
TA贡献1790条经验 获得超9个赞
只是这样做:
data.groupby('Week').sum()
获取真值的个数(记住 True=1, False=0)。
要获得百分比,只需执行以下操作:
data.groupby('week').sum()/data.groupby('week').count()
添加回答
举报
0/150
提交
取消