Python 高效地将数据帧列转换为对象

Python 高效地将数据帧列转换为对象,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫的数据框,里面有很多条目。如果可能的话,我想在不进行迭代的情况下逐行创建一个对象 即: 可能吗?我在文档中找不到与此相关的任何内容。如果您想要对象列表,可以使用itertuples,它们返回命名的对象(几乎是) 另一个想法是使用namedtuple和apply from collections import namedtuple cls = namedtuple(typename='Person', field_names=df.columns.tolist()) df.appl

我有一个熊猫的数据框,里面有很多条目。如果可能的话,我想在不进行迭代的情况下逐行创建一个对象

即:


可能吗?我在文档中找不到与此相关的任何内容。

如果您想要对象列表,可以使用
itertuples
,它们返回
命名的对象(几乎是)


另一个想法是使用
namedtuple
apply

from collections import namedtuple
cls = namedtuple(typename='Person', field_names=df.columns.tolist())

df.apply(lambda r: cls(**r.to_dict()), 1)

0      (13, John)
1      (16, Marc)
2     (17, Prisl)
3      (14, Mike)
4    (11, Robert)
dtype: object

df.apply(lambda r: cls(**r.to_dict()), 1).tolist()

[Person(Age=13, Name='John'),
 Person(Age=16, Name='Marc'),
 Person(Age=17, Name='Prisl'),
 Person(Age=14, Name='Mike'),
 Person(Age=11, Name='Robert')]

如果您对类不太在行,可以使用
记录
返回记录列表

df.to_dict('records')

[{'Age': 13, 'Name': 'John'},
 {'Age': 16, 'Name': 'Marc'},
 {'Age': 17, 'Name': 'Prisl'},
 {'Age': 14, 'Name': 'Mike'},
 {'Age': 11, 'Name': 'Robert'}]

“按行创建对象”是什么意思?什么对象?您想为数据帧的每一行构造一个对象(可能包含名称和年龄),而不访问每一行?如果是这样的话,该如何工作?你必须四处移动数据我想用最有效的方法按行(有年龄和姓名的人)构造一个对象什么对象?顺便问一下,你为什么想要对象?我知道这来得有点晚,但我已经尽我所知更新了我的答案。
from collections import namedtuple
cls = namedtuple(typename='Person', field_names=df.columns.tolist())

df.apply(lambda r: cls(**r.to_dict()), 1)

0      (13, John)
1      (16, Marc)
2     (17, Prisl)
3      (14, Mike)
4    (11, Robert)
dtype: object

df.apply(lambda r: cls(**r.to_dict()), 1).tolist()

[Person(Age=13, Name='John'),
 Person(Age=16, Name='Marc'),
 Person(Age=17, Name='Prisl'),
 Person(Age=14, Name='Mike'),
 Person(Age=11, Name='Robert')]
df.to_dict('records')

[{'Age': 13, 'Name': 'John'},
 {'Age': 16, 'Name': 'Marc'},
 {'Age': 17, 'Name': 'Prisl'},
 {'Age': 14, 'Name': 'Mike'},
 {'Age': 11, 'Name': 'Robert'}]