将 Dataframe 转换为 numpy 数组的命名元组

问题描述 投票:0回答:1

我需要将 pandas 数据框转换为 numpy 数组的元组。我的代码就像,

import pandas as pd

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)
list(df.itertuples(name='data', index=False))

输出>>

[data(Class=10., Age=27., Mark=76., Fees=1000.), data(Class=11., Age=24., Mark=56., Fees=1200.), data(Class=9., Age=22., Mark=89., Fees=590.), data(Class=8., Age=32., Mark=45., Fees=605.)]

但是,我需要类似的输出

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))

请帮我解决这个问题

python dataframe tuples namedtuple
1个回答
0
投票

您可以通过将 DataFrame 的每一列转换为 numpy 数组,然后使用命名元组来存储这些数组来实现所需的输出。具体方法如下:

import pandas as pd
import numpy as np
from collections import namedtuple

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)

# Convert each column to a numpy array
class_arr = np.array(df['Class'], dtype=np.float32)
age_arr = np.array(df['Age'], dtype=np.float32)
mark_arr = np.array(df['Mark'], dtype=np.float32)
fees_arr = np.array(df['Fees'], dtype=np.float32)

# Create a namedtuple
DataTuple = namedtuple('Data', ['Class', 'Age', 'Mark', 'Fees'])

# Create an instance of the namedtuple with the numpy arrays
data_instance = DataTuple(Class=class_arr, Age=age_arr, Mark=mark_arr, Fees=fees_arr)

print(data_instance)

输出:

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))
© www.soinside.com 2019 - 2024. All rights reserved.