Так вы можете заменить пустые ячейки нулями.
>>> df = pd.DataFrame(dict(A=['2', 'hello'], B=['', '3']))
>>> df
A B
0 2
1 hello 3
>>> def convert_fill(df):
... return df.stack().apply(pd.to_numeric, errors='ignore').fillna(0).unstack()
...
>>> convert_fill(df)
A B
0 2 0
1 hello 3
df [~ pd.isnull (df)] действительно здорово, он получает только непустые ячейки.
>>> print(df[~pd.isnull(df)])
A B
0 2
1 hello 3