Given a square pandas DataFrame of the following form:
a b c
a 1 .5 .3
b .5 1 .4
c .3 .4 1
How can the upper triangle be melted to ge
Building from solution by @jezrael, boolean indexing would be a more explicit approach:
import numpy
from pandas import DataFrame
df = DataFrame({'a':[1,.5,.3],'b':[.5,1,.4],'c':[.3,.4,1]},index=list('abc'))
print df,'\n'
keep = np.triu(np.ones(df.shape)).astype('bool').reshape(df.size)
print df.stack()[keep]
output:
a b c
a 1.0 0.5 0.3
b 0.5 1.0 0.4
c 0.3 0.4 1.0
a a 1.0
b 0.5
c 0.3
b b 1.0
c 0.4
c c 1.0
dtype: float64