Convert pandas dataframe to NumPy array

Question

I am interested in knowing how to convert a pandas dataframe into a NumPy array.

dataframe:

``````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')
``````

gives

``````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
``````

I would like to convert this to a NumPy array, as so:

``````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]])
``````

How can I do this?

As a bonus, is it possible to preserve the dtypes, like this?

``````array([[ 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]],
dtype=[('ID', '<i4'), ('A', '<f8'), ('B', '<f8'), ('B', '<f8')])
``````

or similar?

1
350
6/6/2019 12:09:06 AM

To convert a pandas dataframe (df) to a numpy ndarray, use this code:

``````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]])
``````
310
5/10/2019 10:50:09 PM