首页 > 解决方案 > 使用 dtype float 将 pandas.Multindex 转换为 numpy.ndarray

问题描述

将 pandas.Multiindex 转换为 numpy.ndarray 时,输出是一维 ndarray,dtype=object如下例所示:

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 将是:

一个 C
10 0 K0
20 1 K1
30 2 K2
40 3 K3
50 4 K4
60 5 K5

的输出df.index.to_numpy()是一个一维ndarray,其中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)

有没有更直接或更好的解决方案?

标签: pythonpandasnumpynumpy-ndarray

解决方案


我很确定你会通过展平多索引并从结果中获取 numpy 数组来得到你想要的。例如,使用以下语法

np.array(list(df.index))

推荐阅读