I have a pandas dataframe I would like to se the diagonal to 0
import numpy import pandas df = pandas.DataFrame(numpy.random.rand(5,5)) df Out[6]: 0
Here is a hack that worked for me:
def set_diag(self, values): n = min(len(self.index), len(self.columns)) self.values[[np.arange(n)] * 2] = values pd.DataFrame.set_diag = set_diag x = pd.DataFrame(np.random.randn(10, 5)) x.set_diag(0)