从包含字典的namedtuples创建DataFrame

时间:2014-04-28 07:20:45

标签: python pandas

鉴于list namedtuples,是否有人知道如何从所选列中创建一个pandas DataFrame,其中一些列中包含我想要作为列处理的词典?如果您只是致电pandas.DataFrame(),则词典将不会被展开",因此您必须从中创建另一个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'}

1 个答案:

答案 0 :(得分:1)

尝试在评论中使用pandas.concatDataFrame.apply作为 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)

输出:

   0  1  age name
0  1  2   12  foo
1  3  4   24  bar