我需要将 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))
请帮我解决这个问题
您可以通过将 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))