如何将Pandas DataFrame转换为包含numpy数组的namedtuple?
将Pandas DataFrame转换为包含numpy数组的namedtuple
你需要生成一个单一的namedtuple,其中每个字段对应DataFrame的一列,值为该列转换后的float32类型numpy数组,而非按行生成namedtuple列表。可以按以下步骤实现:
实现代码
import pandas as pd import numpy as np from collections import namedtuple # 构造DataFrame data = {'Class':[10., 11., 9., 8.], 'Age':[27., 24., 22., 32.], 'Mark':[76., 56., 89., 45.], 'Fees':[1000., 1200., 590., 605.]} df = pd.DataFrame(data) # 定义namedtuple类型,字段名与DataFrame列名一致 DataTuple = namedtuple('data', df.columns) # 将每一列转换为float32类型的numpy数组,传入namedtuple result = DataTuple(*(df[col].to_numpy(dtype=np.float32) for col in df.columns)) # 查看结果 print(result)
输出结果
data( Class=array([10., 11., 9., 8.], dtype=float32), Age=array([27., 24., 22., 32.], dtype=float32), Mark=array([76., 56., 89., 45.], dtype=float32), Fees=array([1000., 1200., 590., 605.], dtype=float32) )
关键说明
namedtuple('data', df.columns):直接复用DataFrame的列名作为namedtuple的字段,无需手动逐个指定。df[col].to_numpy(dtype=np.float32):将每一列数据转换为指定的float32类型numpy数组,完全匹配你需要的格式。- 生成器表达式
*(...)批量传递每列的数组参数,代码简洁且高效。
内容的提问来源于stack exchange,提问作者Aristocrat
相关产品推荐
相关产品推荐

