<p>您可以堆叠索引数组以及(可能)中的展平值和转置值<code>DataFrame</code>。你知道吗</p>
<p>例如:</p>
<p>作为pd导入</p>
<pre><code>df = pd.DataFrame({0: [0,1,1,0,0,1,0],
1: [0,0,0,0,0,1,0],
2: [1,0,1,0,1,0,0]},
index=['Jan2017', 'Feb2017', 'Mar2017', 'Apr2017', 'May2017', 'Jun2017', 'Jul2017'])
</code></pre>
<p>可以这样处理:</p>
<pre><code>>>> np.stack([np.repeat(np.arange(len(df.columns)), len(df)), df.values.T.ravel()], axis=1)
array([[0, 0],
[0, 1],
[0, 1],
[0, 0],
[0, 0],
[0, 1],
[0, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 1],
[1, 0],
[2, 1],
[2, 0],
[2, 1],
[2, 0],
[2, 1],
[2, 0],
[2, 0]], dtype=int64)
</code></pre>
<p><a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.repeat.html" rel="nofollow noreferrer">^{<cd2>}</a>用于创建索引:</p>
<pre><code>>>> np.repeat(np.arange(len(df.columns)), len(df))
array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2])
</code></pre>
<p><a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.T.html" rel="nofollow noreferrer">^{<cd3>}</a>将数组转置,<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.ravel.html" rel="nofollow noreferrer">^{<cd4>}</a>将其展平:</p>
<pre><code>>>> df.values.T.ravel()
array([0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0], dtype=int64)
</code></pre>
<p>然后使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.stack.html" rel="nofollow noreferrer">^{<cd6>}</a>按行(因此<code>axis=1</code>)堆叠</p>