亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多列條件計數,同時聚合時間列(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 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號