pythonpandas

How can I convert each Pandas Data Frame row into an object including the column values as the attributes?


Suppose I have a DataFrame including following columns "NAME", "SURNAME", "AGE" and I would like to create one object for each row, including those column values as its variables.

person = ConvertRow2Object(frame.iloc[0,:])
print person.NAME //outputs Gary

How can I do it with a generic solution to any DataFrame with any kind of column names and data types?


Solution

  • You can convert the whole thing to a numpy recarray, then each record in the array is attributed:

    people = frame.to_records()
    person = people[0]
    print person.NAME  # etc...
    

    Using a namedtuple also seems to work:

    from collections import namedtuple
    
    Person = namedtuple('Person', frame.dtypes.index.tolist())
    person = Person(*frame.iloc[0,:])
    print person.NAME  # etc...