简单的例子:>>> 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 2ticker GE 2010-01-01 30date GE 2010-01-02 31现在它认为那['ticker', 'date']是索引本身,而不是我想用作索引的列。有办法做到这一点而无需求助于中间的numpy ndarray或set_index事后使用吗?
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
要从namedtuple获取系列,可以使用_fields属性:
In [11]: pd.Series(a, a._fields)
Out[11]:
ticker GE
date 2010-01-01
price 30
dtype: object
同样,您可以创建一个DataFrame,如下所示:
In [12]: df = pd.DataFrame(l, columns=l[0]._fields)
In [13]: df
Out[13]:
ticker date price
0 GE 2010-01-01 30
1 GE 2010-01-02 31
您必须set_index遵循事实,但是您可以这样做inplace:
In [14]: df.set_index(['ticker', 'date'], inplace=True)
In [15]: df
Out[15]:
price
ticker date
GE 2010-01-01 30
2010-01-02 31
添加回答
举报
0/150
提交
取消