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
我有一个包含两列的数据框:
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