這是一個棘手的問題,我將直接用一個例子來解釋它假設我們有這個數據框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
提交
取消