如何从系列中创建multiIndex对象?

时间:2012-09-15 11:15:03

标签: python pandas

我有一个数据系列'rpt_date':

>>> rpt_date
STK_ID
000002    [u'20060331', u'20060630']
000005    [u'20061231', u'20070331', u'20070630']
>>> type(rpt_date)
<class 'pandas.core.series.Series'>
>>> 

如何通过以下方式创建multiIndex对象(pandas.core.index.MultiIndex):

'my_index = gen_index_by_series (rpt_date)'

'my_index'看起来像:

>>> my_index
MultiIndex
[('000002', '20060331') ('000002', '20060630') ('000005', '20061231')
 ('000005', '20070331') ('000005', '20070630')]
>>> type(my_index)
<class 'pandas.core.index.MultiIndex'>
>>> 

那么如何写'gen_index_by_series(series)'

1 个答案:

答案 0 :(得分:1)

要将第一个元素与另一个元素相关联,您可以这样使用itertools.repeatzip

>>> import itertools as it
>>> L = [['000002', [u'20060331', u'20060630']],
...      ['000005', [u'20061231', u'20070331', u'20070630']]]
>>> couples = [zip(it.repeat(key), rest) for key, rest in L]
>>> couples
[[('000002', u'20060331'), ('000002', u'20060630')],
[('000005', u'20061231'), ('000005', u'20070331'), ('000005', u'20070630')]]

L对象获取Series之类的列表应该不会太难。

创建MultiIndex我相信你要使用from_tuples方法:

MultiIndex.from_tuples(sum(couples, []), names=('first', 'second'))

由于我不是熊猫用户,我对剩余的任务无能为力,即使它们可能很容易。这是以正确的方式迭代系列的问题。