Более или менее векторизованная версия:
df[df.applymap(sum).notnull()].stack().groupby(level=0).apply(tuple)
Вывод:
0 ((10.213, -20.23), (120.1, -300.23), (111.0, -...
1 ((11.22, -22.33), (123.1, -302.23))
2 ((122.22, -22.44),)
dtype: object
Идея:
In [727]: q.df2.applymap(sum).notnull()
Out[727]:
col1 col2 col3
0 True True True
1 True True False
2 True False False
In [728]: q.df2[q.df2.applymap(sum).notnull()]
Out[728]:
col1 col2 col3
0 (10.213, -20.23) (120.1, -300.23) (111.0, -231.1)
1 (11.22, -22.33) (123.1, -302.23) NaN
2 (122.22, -22.44) NaN NaN
In [729]: q.df2[q.df2.applymap(sum).notnull()].stack()
Out[729]:
0 col1 (10.213, -20.23)
col2 (120.1, -300.23)
col3 (111.0, -231.1)
1 col1 (11.22, -22.33)
col2 (123.1, -302.23)
2 col1 (122.22, -22.44)
dtype: object
In [730]: q.df2[q.df2.applymap(sum).notnull()].stack().groupby(level=0).apply(tuple)
Out[730]:
0 ((10.213, -20.23), (120.1, -300.23), (111.0, -...
1 ((11.22, -22.33), (123.1, -302.23))
2 ((122.22, -22.44),)
dtype: object