问题描述
将 pandas.Multiindex 转换为 numpy.ndarray 时,输出是带有 dtype=object
的一维 ndarray,如下例所示:
df = pd.DataFrame({
'A': [10,20,30,40,50,60],'B': [0,1,2,3,4,5],'C': ['K0','K1','K2','K3','K4','K5']
}).set_index(['A','B'])
df 将是:
A | B | C |
---|---|---|
10 | 0 | K0 |
20 | 1 | K1 |
30 | 2 | K2 |
40 | 3 | K3 |
50 | 4 | K4 |
60 | 5 | K5 |
df.index.to_numpy()
的输出是带有 dtype=object
的一维数组:
array([(10,0),(20,1),(30,2),(40,3),(50,4),(60,5)],dtype=object)
但我想要:
array([[10,0],[20,1],[30,2],[40,3],[50,4],[60,5]])
在 How to convert a Numpy 2D array with object dtype to a regular 2D array of floats,我找到了以下解决方案:
np.vstack(df.index)
有没有更直接或更好的解决方案?
解决方法
我很确定您将通过展平多索引并从结果中获取 numpy 数组来获得您想要的结果。例如。通过使用以下语法
np.array(list(df.index))
,
将索引转为列。
df.reset_index()[['A','B']].values