2016-06-23 2 views
0

Я пытаюсь следующийПанды сводной таблицы, игнорируя нули, принимая среднее

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]) 

Но я хотел бы игнорировать нули в то время как принимая среднее значение для каждого из значений. Есть ли способ через панды вместо меня делать индекс для нулей и избавляться от них и принимать значения столбцов?

+1

Поскольку вы помечены NumPy. .. a = np.array ([0,1,0,2,0,3]), то np.where (a> 0, a, np.nan) дает массив ([nan, 1.000, nan, 2.000, nan , 3.000]), поэтому ставим его вместе с nanmean ... np.nanmean (np.where (a> 0, a, np.nan)) дает 2.0 –

ответ

1

Я не знаю, есть ли способ игнорировать нули, но вы можете установить их в качестве среднего значения до pivot (что даст тот же результат):

for col in dfout3.columns: 
    dfout3.ix[dfout3.col == 0,col] = dfout3.col.mean() 
Смежные вопросы