为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2021-03-15 10:15:09
简单的例子:>>> 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


查看完整回答
反对 回复 2021-03-31
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信