多索引和时区 - 冻结列表错误

时间:2014-10-29 11:24:11

标签: python pandas multi-index

我尝试更改多索引DataFrame的时区但是我得到一个冻结列表错误。 有人知道如何继续吗?

>>> array = [('s001', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')] + [('s002', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')]
>>> index = pd.MultiIndex.from_tuples(array, names=['sce', 'DATES'])
>>> df = pd.DataFrame(np.random.randn(len(index)), index=index)

>>> df.index.levels[1] = df.index.levels[1].tz_localize('Etc/GMT-1', ambiguous = 'NaT')
  

Traceback(最近一次调用最后一次):文件“”,第1行,in      文件   “C:\蟒\ lib中\蟒\大熊猫-0.15.0rc1-py2.7-win32.egg \大熊猫\核心\ base.py”,   第221行,在_disabled中       self。 class name )TypeError:'FrozenList'不支持可变操作。

1 个答案:

答案 0 :(得分:10)

该错误是为了避免在设置级别(但不是标签)时出现不一致,为此目的使用set_levels函数。 (它也可以在现场完成)

In [8]: df.index.set_levels(df.index.levels[1].\
            tz_localize('Etc/GMT-1', ambiguous = 'NaT'),level=1)
Out[8]: 
MultiIndex(levels=[[u's001', u's002'], [2014-01-01 01:00:00+01:00, 2014-01-01 02:00:00+01:00, 2014-01-01 03:00:00+01:00, 2014-01-01 04:00:00+01:00, 2014-01-01 05:00:00+01:00, 2014-01-01 06:00:00+01:00, 2014-01-01 07:00:00+01:00, 2014-01-01 08:00:00+01:00, 2014-01-01 09:00:00+01:00, 2014-01-01 10:00:00+01:00, 2014-01-01 11:00:00+01:00, 2014-01-01 12:00:00+01:00, 2014-01-01 13:00:00+01:00, 2014-01-01 14:00:00+01:00, 2014-01-01 15:00:00+01:00, 2014-01-01 16:00:00+01:00, 2014-01-01 17:00:00+01:00, 2014-01-01 18:00:00+01:00, 2014-01-01 19:00:00+01:00, 2014-01-01 20:00:00+01:00, 2014-01-01 21:00:00+01:00, 2014-01-01 22:00:00+01:00, 2014-01-01 23:00:00+01:00, 2014-01-02 00:00:00+01:00, 2014-01-02 01:00:00+01:00, 2014-01-02 02:00:00+01:00, 2014-01-02 03:00:00+01:00, 2014-01-02 04:00:00+01:00, 2014-01-02 05:00:00+01:00, 2014-01-02 06:00:00+01:00, 2014-01-02 07:00:00+01:00, 2014-01-02 08:00:00+01:00, 2014-01-02 09:00:00+01:00, 2014-01-02 10:00:00+01:00, 2014-01-02 11:00:00+01:00, 2014-01-02 12:00:00+01:00, 2014-01-02 13:00:00+01:00, 2014-01-02 14:00:00+01:00, 2014-01-02 15:00:00+01:00, 2014-01-02 16:00:00+01:00, 2014-01-02 17:00:00+01:00, 2014-01-02 18:00:00+01:00, 2014-01-02 19:00:00+01:00, 2014-01-02 20:00:00+01:00, 2014-01-02 21:00:00+01:00, 2014-01-02 22:00:00+01:00, 2014-01-02 23:00:00+01:00, 2014-01-03 00:00:00+01:00, 2014-01-03 01:00:00+01:00, 2014-01-03 02:00:00+01:00, 2014-01-03 03:00:00+01:00, 2014-01-03 04:00:00+01:00, 2014-01-03 05:00:00+01:00, 2014-01-03 06:00:00+01:00, 2014-01-03 07:00:00+01:00, 2014-01-03 08:00:00+01:00, 2014-01-03 09:00:00+01:00, 2014-01-03 10:00:00+01:00, 2014-01-03 11:00:00+01:00, 2014-01-03 12:00:00+01:00, 2014-01-03 13:00:00+01:00, 2014-01-03 14:00:00+01:00, 2014-01-03 15:00:00+01:00, 2014-01-03 16:00:00+01:00, 2014-01-03 17:00:00+01:00, 2014-01-03 18:00:00+01:00, 2014-01-03 19:00:00+01:00, 2014-01-03 20:00:00+01:00, 2014-01-03 21:00:00+01:00, 2014-01-03 22:00:00+01:00, 2014-01-03 23:00:00+01:00, 2014-01-04 00:00:00+01:00, 2014-01-04 01:00:00+01:00, 2014-01-04 02:00:00+01:00, 2014-01-04 03:00:00+01:00, 2014-01-04 04:00:00+01:00, 2014-01-04 05:00:00+01:00, 2014-01-04 06:00:00+01:00, 2014-01-04 07:00:00+01:00, 2014-01-04 08:00:00+01:00, 2014-01-04 09:00:00+01:00, 2014-01-04 10:00:00+01:00, 2014-01-04 11:00:00+01:00, 2014-01-04 12:00:00+01:00, 2014-01-04 13:00:00+01:00, 2014-01-04 14:00:00+01:00, 2014-01-04 15:00:00+01:00, 2014-01-04 16:00:00+01:00, 2014-01-04 17:00:00+01:00, 2014-01-04 18:00:00+01:00, 2014-01-04 19:00:00+01:00, 2014-01-04 20:00:00+01:00, 2014-01-04 21:00:00+01:00, 2014-01-04 22:00:00+01:00, 2014-01-04 23:00:00+01:00, 2014-01-05 00:00:00+01:00, 2014-01-05 01:00:00+01:00, 2014-01-05 02:00:00+01:00, 2014-01-05 03:00:00+01:00, 2014-01-05 04:00:00+01:00, ...]],
           labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...]],
           names=[u'sce', u'DATES'])