簡體   English   中英

Pandas pivot_table 將 nan 替換為 0 aggfunc='sum'

[英]Pandas pivot_table replaces nan with 0 aggfunc='sum'

我正在使用這種形式的多值數據透視表:

pivot = df.pivot_table(index=[indices], columns=['column'], values=['start_value','end_value','delta','name','unit'], aggfunc='sum')

要使用數據透視表獲得您想要的結果:您應該用 0 填充第一個 Nan 值:

df.fillna(0)

然后制作您的pivot_table。

替代的解決方案是使用GroupBy.sum與參數min_count=1 ,但也有被除去的非數字列

df = (df.groupby(['indices', 'column'])
                ['start_value','end_value','delta','name','unit']
                 .sum(min_count=1) 
                  .unstack()
                    )
print (df)
        start_value         end_value          delta        
column       '1nan' 'other'    '1nan' 'other' '1nan' 'other'
indices                                                     
A               NaN     NaN    1000.0     NaN    NaN     NaN

因為使用pivot_table刪除了NaNs列:

df = df.pivot_table(index=['indices'], 
                    columns=['column'], 
                    values=['start_value','end_value','delta','name','unit'], 
                    aggfunc=lambda x: x.sum(min_count=1)
                    )
print (df)
        end_value    name            unit        
column     '1nan'  '1nan'  'other' '1nan' 'other'
indices                                          
A          1000.0  'test'  'test2'  'USD'   'USD'

使用 mysum() 函數:

mysum = lambda x: sum(x)

奇怪但有效!

/米

暫無
暫無

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

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