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

ero*_*gol 8 python pandas

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

person = ConvertRow2Object(frame.iloc[0,:])
print person.NAME //outputs Gary
Run Code Online (Sandbox Code Playgroud)

如何使用具有任何类型的列名和数据类型的任何 DataFrame 的通用解决方案来做到这一点?

jkm*_*acc 10

您可以将整个事物转换为 numpy recarray,然后对数组中的每条记录进行归因:

people = frame.to_records()
person = people[0]
print person.NAME // ...
Run Code Online (Sandbox Code Playgroud)

使用命名元组似乎也有效:

from collections import namedtuple

Person = namedtuple('Person', frame.dtypes.index.tolist())
person = Person(*frame.iloc[0,:])
print person.NAME // ...
Run Code Online (Sandbox Code Playgroud)