您可以堆叠一个索引数组以及您(可能)DataFrame 中的展平和转置值。
例如:
将熊猫导入为 pd
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'])
可以这样处理:
>>> 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)
np.repeat 用于创建索引:
>>> 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])
.T 转置了数组,ravel 将其展平:
>>> 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)
然后使用np.stack“逐行”堆叠(因此是axis=1)