簡體   English   中英

帶有多列的熊貓數據透視表

[英]pivot table in pandas with multiple columns

我在熊貓中有以下數據框

  date        prod    hourly_bucket      tank      trans      flag     
  01-01-2019  TP      05:00:00-06:00:00  2         Preset     Peak
  01-01-2019  TP      05:00:00-06:00:00  2         Preset     Peak
  01-01-2019  TP      05:00:00-06:00:00  2         Non Preset Peak
  02-01-2019  TP      05:00:00-06:00:00  2         Preset     Lean
  02-01-2019  TP      05:00:00-06:00:00  2         Preset     Lean
  02-01-2019  TP      05:00:00-06:00:00  2         Non Preset Lean

我需要的數據幀將是日級別和時段級別的聚合,然后計算Lean and Peak時段的Preset,Non-Preset交易次數

  date       tank   Lean_Non_Preset  Lean_Preset  Peak_Non_Preset  Peak_Preset
  01-01-2019 2      1                2            1                2

我正在熊貓后面

 lean_peak_preset_cnt = df.pivot_table(index=['date','tank'], columns=['flag'],values=['trans'],aggfunc='count').reset_index()  

但這沒有給我所需的解決方案

'trans'添加到參數columns ,然后使用mapjoinMultiIndex中的MultiIndex

lean_peak_preset_cnt = df.pivot_table(index=['date','tank'], 
                                      columns=['flag','trans'],
                                      aggfunc='size', 
                                      fill_value=0) 

lean_peak_preset_cnt.columns = lean_peak_preset_cnt.columns.map('_'.join)
lean_peak_preset_cnt = lean_peak_preset_cnt.reset_index() 
print (lean_peak_preset_cnt)

         date  tank  Lean_No Preset  Lean_Preset  Peak_Non Preset  Peak_Preset
0  01-01-2019     2               0            0                1            2
1  02-01-2019     2               1            2                0            0

您幾乎在那里:

piv = (df.pivot_table(index=['date', 'tank'], columns=['trans', 'flag'], 
                      aggfunc='size', fill_value=0))
piv.columns = piv.columns.ravel()

大小函數提供所需的計數,您希望將非計數值填充為0,並指定所需的列和索引。 有關更多詳細信息,請參見文檔 ravel將您的多索引列合並到一個級別。

                 (Nonpreset, Lean)  (Nonpreset, Peak)  (Preset, Lean)  \
#date       tank                                                         
#01-01-2019 2                     0                  1               0   
#02-01-2019 2                     1                  0               2   

                 (Preset, Peak)  
#date       tank                  
#01-01-2019 2                  2  
#02-01-2019 2                  0 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM