pythondataframetuplesnamedtuple

Conversion of Dataframe to namedtuple of numpy arrays


I need to convert my pandas dataframe to tuple of numpy arrays. My code is like,

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

output >>

[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.)]

But, I need output as like

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

Please help me with this


Solution

  • You can use:

    from collections import namedtuple
    
    Data = namedtuple('data', ['Class', 'Age', 'Mark', 'Fees'])
    out = Data(*df.values.T)
    

    Output:

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