Set values on the diagonal of pandas.DataFrame

后端 未结 5 2199
日久生厌
日久生厌 2020-11-27 17:56

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           


        
5条回答
  •  醉梦人生
    2020-11-27 18:29

    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)
    

提交回复
热议问题