How to return df with non-nan values of unique column Pandas DataFrame Pythonically
<p>I have got the following dataframe, in which each column contains a set of values, and each index is only used once. However, I would like to get a completely filled dataframe. In order to do that I need to select, from each column, an X amount of values, in which X is the length of the column with the least non-nan values (in this case column '1.0'). </p>

<pre><code>&gt;&gt;&gt; stat_df_iws

iws_w           -2.0      -1.0       0.0       1.0
0           0.363567       NaN       NaN       NaN
1           0.183698       NaN       NaN       NaN
2                NaN -0.337931       NaN       NaN
3          -0.231770       NaN       NaN       NaN
4                NaN  0.544836       NaN       NaN
5                NaN -0.377620       NaN       NaN
6                NaN       NaN -0.428396       NaN
7                NaN       NaN -0.443317       NaN
8                NaN -0.268033       NaN       NaN
9                NaN  0.246714       NaN       NaN
10               NaN       NaN -0.503887       NaN
11               NaN       NaN       NaN -0.298935
12               NaN -0.252775       NaN       NaN
13               NaN -0.447757       NaN       NaN
14         -0.650598       NaN       NaN       NaN
15         -0.660542       NaN       NaN       NaN
16               NaN -0.952041       NaN       NaN
17         -0.667356       NaN       NaN       NaN
18         -0.920873       NaN       NaN       NaN
19               NaN -0.537657       NaN       NaN
20               NaN       NaN -0.525121       NaN
21               NaN       NaN       NaN -0.619755
22               NaN -0.652138       NaN       NaN
23               NaN -0.924181       NaN       NaN
24               NaN -0.665720       NaN       NaN
25               NaN       NaN -0.336841       NaN
26         -0.428931       NaN       NaN       NaN
27               NaN -0.348248       NaN       NaN
28               NaN  0.781024       NaN       NaN
29          0.110727       NaN       NaN       NaN
...              ...       ...       ...       ...
</code></pre>

<p>I've achieved this with the following code, but it is not a very pythonic way of solving this. </p>

<pre><code>def get_non_null_from_pivot(df):
    lngth = min(list(len(col.dropna()) for ind, col in df.iteritems()))
    df = pd.concat([df.loc[:,-2.0].dropna().head(lngth).reset_index(drop=True),\
                    df.loc[:,-1.0].dropna().head(lngth).reset_index(drop=True),\
                    df.loc[:,0.0].dropna().head(lngth).reset_index(drop=True),\
                    df.loc[:,1.0].dropna().head(lngth).reset_index(drop=True)], \
                   axis=1)
</code></pre>

<p><strong>Is there a simpler way to achieve the same goal, so that I can more automatically repeat this step for other dataframes?</strong> Preferably without for-loops, for efficiency reasons. </p>