Search code examples
pythonarcgisminimum

Rejecting zero values when creating a list of minimum values. (Python Field Calc)


I'm trying to create a list of minimum values from four columns of values. Below is the statement I have used.

min ([!Depth!, !Depth_1!, !Depth_12!, !Depth_1_13!])

The problem I'm having is that some of the fields under these columns contain zeros. I need it to return the next lowest value from the columns that is greater than zero.

I have an attribute table for a shapefile from an ArcGIS document. It has 10 columns. ID, Shape, Buffer ID (x4), Depth (x4).

I need to add an additional column to this data which represents the minimum number from the 4 depth columns. Many of the cells in this column are equal to zero. I need the new column to take the minimum value from the four depth columns but ignore the zero values and take the next lowest value.

A screen shot of what I am working from:

enter image description here


Solution

  • Create a function that does it for you. I added a pic so you can follow the steps. Just change the input names to your column names.

    def my_min(d1,d2,d3,d4):       
        lst = [d1,d2,d3,d4]        
        return min([x for x in lst if x !=0])
    

    enter image description here