Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

python

pandas

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?

like image 715
erogol Avatar asked Aug 12 '14 21:08

erogol


1 Answers

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 // ...

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 // ...
like image 129
jkmacc Avatar answered Nov 16 '22 22:11

jkmacc