0

我有一个数据系列 '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)'呢?

4

1 回答 1

1

要将第一个元素与另一个元素相关联,您可以使用itertools.repeatand zip,以这种方式:

>>> 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')]]

LSeries对象中获取列表应该不会太难。

要创建一个MultiIndex我相信您必须使用以下from_tuples方法:

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

由于我不是 pandas 用户,因此我在剩余的任务中帮不上什么忙,尽管它们可能很容易。这是以正确的方式迭代系列的问题。

于 2012-09-15T11:27:02.343 回答