如何从namedtuple实例列表创建pandas DataFrame(具有索引或多索引)?

简单的例子:


>>> from collections import namedtuple

>>> import pandas


>>> Price = namedtuple('Price', 'ticker date price')

>>> a = Price('GE', '2010-01-01', 30.00)

>>> b = Price('GE', '2010-01-02', 31.00)

>>> l = [a, b]

>>> df = pandas.DataFrame.from_records(l, index='ticker')

Traceback (most recent call last)

...

KeyError: 'ticker'

比较难的例子:


>>> df2 = pandas.DataFrame.from_records(l, index=['ticker', 'date'])

>>> df2


         0           1   2

ticker  GE  2010-01-01  30

date    GE  2010-01-02  31

现在它认为那['ticker', 'date']是索引本身,而不是我想用作索引的列。


有办法做到这一点而无需求助于中间的numpy ndarray或set_index事后使用吗?


呼如林
浏览 202回答 1
1回答

慕码人8056858

要从namedtuple获取系列,可以使用_fields属性:In [11]: pd.Series(a, a._fields)Out[11]:ticker            GEdate      2010-01-01price             30dtype: object同样,您可以创建一个DataFrame,如下所示:In [12]: df = pd.DataFrame(l, columns=l[0]._fields)In [13]: dfOut[13]:  ticker        date  price0     GE  2010-01-01     301     GE  2010-01-02     31您必须set_index遵循事实,但是您可以这样做inplace:In [14]: df.set_index(['ticker', 'date'], inplace=True)In [15]: dfOut[15]:                   priceticker dateGE     2010-01-01     30       2010-01-02     31
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python