2016-02-24 1 views
3

У меня есть следующие данные и нужно на первом этапе, чтобы найти min значения между рядами без 0.00Вычислять минимумы в Pandas без `zero`-значений?

HOME_48 HOME_24 HOME_12 HOME_03 HOME_01 HOME_00 HOME 
    0.00  1.54  2.02  1.84  1.84  1.84 1.84 
    0.00  1.47  1.76  1.89  2.56  2.56 2.56 
    0.00  2.02  2.50  2.56  1.89  1.92 1.92 

Позже мне нужно рассчитать дельта-различий между min и max, но если я использую ниже код, конечные результаты не являются приемлемыми

df['HOME_MIN'] = df.loc[:, COL_HOME].min(axis=1) 

Я не хочу использовать следующие приемы:

df = df.replace(0, np.NaN) 

Beacuse, иногда экстремальные значения могут быть равными 0.01, 0.02 - эти значения также неверные.

Как добавить условие для пропуска 0.00 | 0.01 значения?

Примечание: правильный фильтр

df[df[COL_HOME].min(axis=1) > 0.03].loc[:, COL_HOME].min(axis=1) 

ответ

4

Вы можете использовать булевы фильтр, чтобы исключить все, что вы не хотите, как это.

In [46]: df[df > .01].min(axis=1) 
Out[46]: 
0 1.54 
1 1.47 
2 1.89 
dtype: float64 
+0

Мне нужно найти значения «min» среди конкретных столбцов как 'df.loc [:, COL_HOME] .min (axis = 1)'. Как я могу изменить ваш пример? – SpanishBoy

+0

Вы можете просто выбрать после фильтрации, например. 'df [df> .01] .loc [:, COL_HOME] .min (axis = 1)' – chrisb

+0

Добавлено как вы упомянули, 'df ['HOME_MIN'] = df [df> 0.03] .loc [:, COL_HOME] .min (axis = 1) 'и борется с выходом http://screencast.com/t/fD5rcmb7. – SpanishBoy

Смежные вопросы