Предположим, у меня есть DataFrame, включающий следующие столбцы «ИМЯ», «ФАМИЛИЯ», «ВОЗРАСТ», и я хотел бы создать по одному объекту для каждой строки, включая значения этих столбцов в качестве переменных.

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

Как я могу сделать это с помощью универсального решения для любого DataFrame с любыми именами столбцов и типами данных?

9
erogol 13 Авг 2014 в 01:22
Должен ли это быть объект, доступный через точечную нотацию, или это может быть словарь, доступный по ключу (например, person['name'])?
 – 
Dan
13 Авг 2014 в 01:26

1 ответ

Лучший ответ

Вы можете преобразовать все это в numpy recarray, тогда каждая запись в массиве будет атрибутирована:

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

Кажется, также работает использование namedtuple:

from collections import namedtuple

Person = namedtuple('Person', frame.dtypes.index.tolist())
person = Person(*frame.iloc[0,:])
print person.NAME // ...
11
jkmacc 13 Авг 2014 в 01:51