Pandas的DataFrame转成Numpy的数组形式

生成df的代码如下:

import numpy as np
import pandas as pd
index = [1, 2, 3, 4, 5, 6, 7]
a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1]
b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]
c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]
df = pd.DataFrame({'A': a, 'B': b, 'C': c}, index=index)
df = df.rename_axis('ID')

df的形式如下:

label   A      B  C
ID                               

1  NaN  0.2  NaN
2  NaN  NaN  0.5
3  NaN  0.2  0.5
4  0.1  0.2  NaN
5  0.1  0.2  0.5
6  0.1  NaN  0.5
7  0.1  NaN  NaN

1、使用:df=df.values
输出如下:
array([[nan, 0.2, nan],
       [nan, nan, 0.5],
       [nan, 0.2, 0.5],
       [0.1, 0.2, nan],
       [0.1, 0.2, 0.5],
       [0.1, nan, 0.5],
       [0.1, nan, nan]])


2、使用命令:df= df.as_matrix()
结果如下:
array([[nan, 0.2, nan],
       [nan, nan, 0.5],
       [nan, 0.2, 0.5],
       [0.1, 0.2, nan],
       [0.1, 0.2, 0.5],
       [0.1, nan, 0.5],
       [0.1, nan, nan]])

3、还有这样的命令:df.reset_index().values

4、df.reset_index().values.ravel().view(dtype=[('index', int), ('A', float), ('B', float), ('C', float)])

效果不一样。

推荐阅读更多精彩内容