擅长:python、mysql、java
<p>广播是一个不错的选择:</p>
<pre><code>pd.DataFrame(
(df[['A','B']].values[:,:,None]
* df[['C','D','E']].values[:,None,:]
).reshape(len(df),-1),
columns = [f'{x}{y}' for x in 'AB' for y in 'CDE'],
index = df.index
)
</code></pre>
<p>输出:</p>
<pre><code> AC AD AE BC BD BE
2017-12 -2.193967 0.161804 0.004880 12.769587 -0.941749 -0.028405
2017-12 -0.767914 0.056633 0.001708 12.769587 -0.941749 -0.028405
2017-12 -0.168964 0.012461 0.000376 12.769587 -0.941749 -0.028405
2017-12 -2.907528 0.214428 0.006468 12.769587 -0.941749 -0.028405
2017-12 -0.439415 0.032407 0.000977 12.769587 -0.941749 -0.028405
2018-01 -6.822617 3.419006 0.037984 6.082179 -3.047951 -0.033862
2018-01 -2.699702 1.352897 0.015030 6.082179 -3.047951 -0.033862
2018-01 -3.204890 1.606061 0.017843 6.082179 -3.047951 -0.033862
</code></pre>