首页 > 后端开发 > Python教程 > 如何有效地将 Pandas DataFrame 转换为 NumPy 数组?

如何有效地将 Pandas DataFrame 转换为 NumPy 数组?

Linda Hamilton
发布: 2024-12-14 17:24:10
原创
865 人浏览过

How to Efficiently Convert a Pandas DataFrame to a NumPy Array?

将 Pandas Dataframe 转换为 NumPy 数组

要将 pandas Dataframe 转换为 NumPy 数组,建议使用 df.to_numpy() 方法。由于多种原因,此方法优于 df.values,如下所述。

使用 df.to_numpy()

调用 df.to_numpy()方法允许从底层 NumPy 数组中提取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')

arr = df.to_numpy()
print(arr)
登录后复制

输出:

[[ 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]]
登录后复制

保留 Dtypes

如果目标是维护结果中的数据类型NumPy 数组,一种可能的方法涉及利用 DataFrame.to_records(),如图所示下面:

records_array = df.to_records()
print(records_array)
登录后复制

输出:

rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
           dtype=[('ID', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<i8')])
登录后复制

作为一种替代方案,可以使用 np.rec.fromrecords:

v = df.reset_index()
records_array = np.rec.fromrecords(v, names=v.columns.tolist())
print(records_array)
登录后复制

输出:

rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
           dtype=[('index', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<i8')])
登录后复制

使用这两种方法中的任何一种都可以确保 NumPy 中数据类型的保存数组。

以上是如何有效地将 Pandas DataFrame 转换为 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板