<p>您的条件很难归纳为一个命令,但这里有一种方法可以采用。在</p>
<h3>拆下对角线</h3>
<pre><code>import numpy as np
np.fill_diagonal(corr.values, np.nan)
print(corr)
# A B C D E
#A NaN 0.65 0.31 0.94 0.55
#B 0.87 NaN 0.96 0.67 0.41
#C 0.95 0.88 NaN 0.72 0.69
#D 0.64 0.84 0.99 NaN 0.78
#E 0.71 0.62 0.89 0.32 NaN
</code></pre>
<h3>查找前2列和后列名</h3>
<p>您可以使用<a href="https://stackoverflow.com/questions/38955182/find-names-of-top-n-highest-value-columns-in-each-pandas-dataframe-row">Find names of top-n highest-value columns in each pandas dataframe row</a>上的答案来获得每行(股票)的前2个和后一个值。在</p>
^{pr2}$
<p>现在使用<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.lookup.html" rel="nofollow noreferrer">^{<cd1>}</a>为<code>result</code>中的每一列获取<code>corr</code>中相应的列值</p>
^{3}$
<h3>重新排序列(可选)</h3>
<pre><code>print(result[['1st', '1st_Val', '2nd', '2nd_Val', 'Last', 'Last_Val']])
# 1st 1st_Val 2nd 2nd_Val Last Last_Val
#A D 0.94 B 0.65 C 0.31
#B C 0.96 A 0.87 E 0.41
#C A 0.95 B 0.88 E 0.69
#D C 0.99 B 0.84 A 0.64
#E C 0.89 A 0.71 D 0.32
</code></pre>