鉴于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'}
答案 0 :(得分:1)
尝试在评论中使用pandas.concat
和DataFrame.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