簡體   English   中英

熊貓df.pivot_table-aggfunc =總和未產生所需的輸出

[英]Pandas df.pivot_table - aggfunc = sum not producing desired output

假設我有一個數據框sega_df

MONTH            Character     Rings    Chili Dogs  Emeralds  
0    Jun 2017    Sonic          25.0          10.0       6.0
5    Jun 2017    Sonic          19.0          15.0       0.0
8    Jun 2017    Shadow         4.0           1.0        0.0
9    Jun 2017    Shadow         23.0          1.0        0.0
12   Jun 2017    Knuckles       9.0           3.0        1.0 
13   Jun 2017    Tails          10.0          6.0        0.0
22   Jul 2017    Sonic          5.0           20.0       0.0
23   Jul 2017    Shadow         3.0           3.0        7.0
24   Jul 2017    Knuckles       9.0           4.0        0.0
27   Jul 2017    Knuckles       11.0          2.0        0.0    
28   Jul 2017    Tails          12.0          3.0        0.0  
29   Jul 2017    Tails          12.0          5.0        0.0

我的pivot_table命令為我提供了每個月的每個字符的表輸出,但是值是一系列隨機Nan0 0 s是因為在以后的幾個月中有更多的數據帶有0,所以我只發布了前幾行。 三列( RingsChili DogsEmeralds )中值的數據類型為numpy.float64 ,所以我也很好奇這是否會影響它,或者這是否就是我定義aggfunc

我的values參數和pivot_table如下:

values = list(sega_df.columns.values)
test = pd.pivot_table(data = sega_df, values = values, index = 'Character', columns = 'MONTH', aggfunc='sum')

這是我想要的數據pivot_table輸出,每個月每個字符三列的總和(例如,六月的Sonic為[25 + 10 + 6 + 19 + 15 + 0] = 75.0):

MONTH            Jun 2017       Jul 2017            
Character            
0    Sonic       75.0           25.0          
1    Shadow      29.0           18.0          
2    Knuckles    13.0           26.0           
3    Tails       16.0           32.0         

只需要groupby sumaxis = 1 sum ,然后我們unstack

df.groupby(['Character','MONTH']).sum().sum(1).unstack()
Out[953]: 
MONTH      Jul2017  Jun2017
Character                  
Knuckles      26.0     13.0
Shadow        13.0     29.0
Sonic         25.0     75.0
Tails         32.0     16.0

暫無
暫無

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

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