Using iteritems in a series (this is what you get when you take a column from a DataFrame), iterating over pairs (index, value). Thus, your item will take values ββ0, 1, and 2 in three iterations of the loop, and your frame will take the values 'hey' , NaN and 'up' (so "frame" is probably a bad name for it). The error comes from trying to use the notnull method on NaN (which is represented as a floating point number).
Instead, you can use the pd.notnull function:
In [3]: pd.notnull(np.nan) Out[3]: False In [4]: pd.notnull('hey') Out[4]: True
Another way would be to use notnull for the entire series, and then repeat these values ββ(which are now logical):
for _, value in df['Column2'].notnull().iteritems(): if value: print 'frame'
source share