从包含字典的namedtuples创建数据帧

2024-04-25 06:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个listnamedtuples,有人知道如何从选定的列中创建pandasDataFrame,其中有些列包含我想作为列处理的字典?如果您只需调用pandas.DataFrame(),那么字典将不会被“扩展”,因此您必须从它们中创建另一个DataFrame,并将所需的列附加到原始数据帧中。这让我觉得既不雅观又低效,能用一行来完成吗?在

import pandas, collections
Point = collections.namedtuple('Point', ['x', 'y', 'val'])
p1 = Point(1,2,{'name':'foo', 'age':12})
p2 = Point(3,4,{'name':'bar', 'age':24})
pandas.DataFrame([p1, p2])

   0  1                           2
0  1  2  {'age': 12, 'name': 'foo'}
1  3  4  {'age': 24, 'name': 'bar'}

Tags: namedataframepandasage原始数据字典foobar
1条回答
网友
1楼 · 发布于 2024-04-25 06:14:43

尝试使用pandas.concat和{}作为评论中提出的joris

import pandas, collections
Point = collections.namedtuple('Point', ['x', 'y', 'val'])
p1 = Point(1,2,{'name':'foo', 'age':12})
p2 = Point(3,4,{'name':'bar', 'age':24})
df = pandas.DataFrame([p1, p2])
print pandas.concat([df.iloc[:,:2],df[2].apply(pandas.Series)],axis=1)

输出:

^{pr2}$

相关问题 更多 >