Pandas dataframe.to_numpy() 具有特定的数据类型

Pandas dataframe.to_numpy() with specific dtypes

我有一个包含两列的数据框:

  In[] df.head()

  Out[]      specific_death   months_survival
       0         False            179
       1         False            127
       2         False            67
       3         True             111
       4         False            118

第一列是布尔值,第二列是整数。如果我将数据帧转换为 numpy ndarray :

array_from_df = df.to_numpy()

我得到一个非结构化 numpy.ndarray。因此,如果我写:

array_from_df.dtype.fields 

结果为无类型。为了让我的程序正常工作,我需要一个结构化数组,其中第一个字段是 np.bool class,第二个字段是 np.int。我看到它的方式有两种选择,但我找不到任何一种方法:

选项一

使用正确的数据类型直接从 Pandas.DataFrame 转换为结构化 numpy.ndarray。

选项二

从 Pandas.DataFrame 转换为非结构化 numpy.ndarray,然后将其转换为结构化 numpy.ndarray。 I found another SO question 关于这个问题,但我无法在我的代码中复制答案。

正如两条评论所建议的那样:

array_from_df = df.to_records() # index=False to not include an index column

输出具有正确数据类型的 numpy.recarray:

array_from_df.dtype.fields