我有一個錯誤代碼、分子及其分母的資料框,以及每個可能的錯誤代碼及其總體錯誤型別的字典。我想按錯誤型別對資料幀中的錯誤代碼進行分組,對它們的分子求和,并保持分母列不變。我試過了
grouped = day1_xione.set_index('error_code').groupby(by=map_values,axis=1).sum().reset_index()
grouped
但它只保留錯誤代碼,而不是按型別對它們進行分組。這是資料樣本的樣子:
資料框:
| 錯誤代碼 | 分子 | 分母 |
|---|---|---|
| 電源回圈開啟 | 5 | 10 |
| 關機 | 1 | 10 |
| 恐慌 - 恐慌 -PANIC_1 | 5 | 10 |
| TEMP_HIGH-TEMP | 0 | 10 |
| 未知-原因_未知 | 9 | 10 |
對于顯示的盡可能多的錯誤代碼,56 個錯誤。每個錯誤代碼都是一個字串,直接匹配字典中的一個代碼。
字典:
map_values =
{'POWER CYCLE ON' : 'POWER RESET',
'POWER OFF': 'POWER RESET',
'PANIC - PANIC -PANIC_1': 'DEVICE PANIC',
'TEMP_HIGH-TEMP': 'OTHER',
'UNKNOWN-Reason_Unknown': 'OTHER'}
57 個代碼和 10 個型別。
期望輸出:
| 錯誤代碼 | 分子 | 分母 |
|---|---|---|
| 電源復位 | 6 | 10 |
| 設備恐慌 | 5 | 10 |
| 其他 | 9 | 10 |
對于出現的所有錯誤代碼
uj5u.com熱心網友回復:
您很接近,您需要groupby使用map和agg用于具有不同功能(sum和first)的聚合的映射值
(df.groupby(df['error_code'].map(map_values))
.agg({'Numerator': 'sum', 'Denominator': 'first'})
.reset_index()
)
輸出:
error_code Numerator Denominator
0 DEVICE PANIC 5 10
1 OTHER 9 10
2 POWER RESET 6 10
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349897.html
上一篇:如何對已經分組的欄進行分組?
