如何直接创建单条数据的pandas.core.frame.Pandas类型对象
直接创建
pandas.core.frame.Pandas对象的两种可行方案 方案1:极简一行实现(完全匹配原生类型)
不需要写遍历循环,直接获取itertuples返回的第一个元素即可,生成的对象和循环遍历得到的结果完全一致:
import pandas as pd d = {'a': 1, 'b': 2} # 不需要索引字段加index=False,需要保留默认索引字段去掉该参数即可 myrow = pd.DataFrame([d]).itertuples(index=False)[0] # 验证 print(type(myrow)) # 输出 <class 'pandas.core.frame.Pandas'> print(myrow.a) # 输出 1
单条数据场景下该方法的性能损耗可以忽略不计,代码比原写法简洁很多。
方案2:更高性能的命名元组构造(行为完全兼容)
pandas.core.frame.Pandas本质是collections.namedtuple的动态子类,你可以直接构造对应结构的命名元组,使用体验和原生Pandas对象完全相同,不需要额外构造DataFrame,性能更高:
from collections import namedtuple # 定义和字段匹配的Pandas命名元组 Pandas = namedtuple('Pandas', ['a', 'b']) myrow = Pandas(a=1, b=2) # 验证 print(myrow.a) # 输出 1 print(myrow.b) # 输出 2
如果需要严格匹配pandas生成的Pandas类型,可以复用已有实例的类进行构造:
# 假设你之前已经生成过一个Pandas类型的row实例 PandasCls = type(existed_row) myrow = PandasCls(a=3, b=4)
内容的提问来源于stack exchange,提问作者user1179317
相关产品推荐
相关产品推荐

