Multiindex und Zeitzone - Frozen List Fehler - Python, Pandas, Multi-Index

Ich versuche, die Zeitzone eines Multiindex DataFrame zu ändern, aber ich bekomme einen eingefrorenen Listenfehler. Hat jemand eine Idee, wie es weitergehen soll?

>>> 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 (letzter Aufruf zuletzt): Datei "", Zeile 1, in Datei "C: Pythonslibpythonpandas-0.15.0rc1-py2.7-win32.eggpandascorebase.py", Zeile 221, in _disabled selbst.Klasse.Name) TypeError: "FrozenList" unterstützt keine veränderbaren Operationen.

Antworten:

10 für die Antwort № 1

Dieser Fehler dient absichtlich der Vermeidung von Inkonsistenzen beim Setzen von Ebenen (aber nicht von Labels) set_levels Funktionen für diesen Zweck. (Es kann auch an Ort und Stelle getan werden)

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