如何将每个Pandas数据框行转换为包含列值作为属性的对象?

n1bvdmb6  于 2023-02-07  发布在  其他
关注(0)|答案(1)|浏览(160)

假设我有一个DataFrame,其中包含以下列“NAME”、“SURNAME”、“AGE”,我想为每行创建一个对象,并将这些列的值作为其变量。

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

对于具有任何类型的列名和数据类型的任何DataFrame,如何使用通用解决方案来实现这一点?

k4emjkb1

k4emjkb11#

你可以把整个过程转换成一个numpy rearray,然后对数组中的每条记录进行属性化:

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

使用namedtuple似乎也可以工作:

from collections import namedtuple

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

相关问题