You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 11:57:12