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

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

聚合大型熊貓數據框

聚合大型熊貓數據框

LEATH 2021-06-20 19:55:58
我有一個數據框,其中列出了 SystemID 以及在某些日期發生的某些類型和類別的警報數量:df                               SystemID         AlarmClass          AlarmType         Day  AlarmCount0  95EE8B57-6BE9-4175-B901-B6B3BEE1844D            Service  Unexpected Status  06/08/2018           31  95EE8B57-6BE9-4175-B901-B6B3BEE1844D            Service  Unexpected Status  05/08/2018           22  95EE8B57-6BE9-4175-B901-B6B3BEE1844D            Service  Unexpected Status  06/08/2018           13  5F891F03-3114-4E62-9A7D-CD2A04061364            Service  Unexpected Status  04/08/2018           24  5F891F03-3114-4E62-9A7D-CD2A04061364            Service  Unexpected Status  04/08/2018           25  5F891F03-3114-4E62-9A7D-CD2A04061364  Event Log Monitor    Application Log  05/08/2018           2我想通過對 SystemID 和 Day 進行分組并列出每種類型和類別的警報數量來匯總這些數據。上述數據框的結果如下所示:                               SystemID         Day  AlarmClass-S  AlarmClass-ELM  AlarmType-US  AlarmType-AL0  95EE8B57-6BE9-4175-B901-B6B3BEE1844D  06/08/2018             4               0             4             01  95EE8B57-6BE9-4175-B901-B6B3BEE1844D  05/08/2018             2               0             2             02  5F891F03-3114-4E62-9A7D-CD2A04061364  04/08/2018             4               0             4             03  5F891F03-3114-4E62-9A7D-CD2A04061364  05/08/2018             0               2             0             2如何最有效地做到這一點?數據框有數百萬條記錄。
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

為了提高性能,您可以為每個 AlarmClass 和 AlarmType 旋轉數據,然后連接結果。


i = df.pivot_table(index=['SystemID', 'Day'], 

                   columns='AlarmClass', 

                   values='AlarmCount', 

                   aggfunc='sum', 

                   fill_value=0)

j = df.pivot_table(index=['SystemID', 'Day'], 

                   columns='AlarmType', 

                   values='AlarmCount', 

                   aggfunc='sum', 

                   fill_value=0)


i.columns = i.columns.map(lambda x: 'AlarmClass-' + ''.join(y[0] for y in x.split()))

j.columns = j.columns.map(lambda x: 'AlarmType-' + ''.join(y[0] for y in x.split()))


df = pd.concat([i, j], axis=1).reset_index()

print(df)

                               SystemID         Day  AlarmClass-ELM   \

0  5F891F03-3114-4E62-9A7D-CD2A04061364  04/08/2018               0             

1  5F891F03-3114-4E62-9A7D-CD2A04061364  05/08/2018               2             

2  95EE8B57-6BE9-4175-B901-B6B3BEE1844D  05/08/2018               0             

3  95EE8B57-6BE9-4175-B901-B6B3BEE1844D  06/08/2018               0             


AlarmClass-S  AlarmType-AL  AlarmType-US

           4             0             4

           0             2             0

           2             0             2

           4             0             4


查看完整回答
反對 回復 2021-06-29
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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