2016-06-23 10 views
0

Einnahme Ich versuche, die folgendePandas Pivot-Tabelle Nullen ignorieren, während mittlere

import pandas as pd 
import numpy as np 

dfout3 = pd.DataFrame({'Idx': MnthIdx, 
         'Col1': Val1, 
         'Col2': Val2, 
         'Col3': Val3)}) 

MeanTable1 = pd.pivot_table(dfout3, index=['Idx'], values=['Col1','Col2','Col3'], aggfunc=[np.mean]) 

Aber ich möchte Nullen ist ignorieren, während der Mittelwert für jeden der Werte nehmen. Gibt es einen Weg durch Pandas, anstatt Index für Nullen zu machen und sie loszuwerden und Mittelwerte zu verwenden?

+1

Da Sie numpy Liste steht. .. a = np.array ([0,1,0,2,0,3]) dann np.wobei (a> 0, a, np.nan) ein Array ergibt ([nan, 1.000, nan, 2.000, nan , 3.000]), also bringt es zusammen mit nanmean ... np.nanmean (np.where (a> 0, a, np.nan)) 2.0 –

Antwort

1

Ich weiß nicht, ob es einen Weg gibt Nullen zu ignorieren, aber man kann sie als Mittelwert vor dem pivot (was das gleiche Ergebnis geben wird) gesetzt:

for col in dfout3.columns: 
    dfout3.ix[dfout3.col == 0,col] = dfout3.col.mean() 
Verwandte Themen