擅长:python、mysql、java
<p>尝试:</p>
<pre><code>li = ['A', 'B' , 'C']
df = pd.DataFrame(test_matrix, index=li, columns=li)
df2=df.where(np.triu(df).astype(np.bool)).stack().rename_axis(('cus1', 'cus2')).reset_index(name='upper')
y=df.where(np.tril(df).astype(np.bool)).stack().values#.reset_index(name='upper')
df2['lower'] = y
</code></pre>
<hr/>
<p><strong>df2:</strong></p>
<pre><code> cus1 cus2 upper lower
0 A B 10.0 30.0
1 A C 20.0 50.0
2 B C 40.0 60.0
</code></pre>
<hr/>
<h2>编辑:</h2>
<pre><code>df = pd.DataFrame(test_matrix, index=li, columns=li)
df2=df.where(np.triu(df).astype(np.bool)).stack().rename_axis(('cus1', 'cus2')).reset_index(name='upper')
df1=df.where(np.tril(df).astype(np.bool)).stack().rename_axis(('cus2', 'cus1')).reset_index(name='lower')
df3 = pd.merge(df1,df2,on=['cus2', 'cus1'])
</code></pre>
<p><strong>df3:</strong></p>
<pre><code> cus2 cus1 lower upper
0 B A 40.0 10.0
1 C A 70.0 20.0
2 C B 80.0 50.0
3 D A 100.0 30.0
4 D B 110.0 60.0
5 D C 120.0 90.0
</code></pre>
<hr/>