consider the information frame df
np.random.seed([3,1415])
df = pd.DataFrame(np.random.rand(3, 3), list('abc'), list('xyz'))
df

calculate the inverse (with numpy, albeit not crazy)
df_inv = pd.DataFrame(np.linalg.pinv(df.values), df.columns, df.index)
df_inv

Notice I use pinvfor pseudo reverse
then check
df_inv.dot(df)
