Die docs auf pandas.PeriodIndex
das folgende Beispiel für den Bau geben:Constructing PeriodIndex aus zwei int64 Spalten
>>> idx = PeriodIndex(year=year_arr, quarter=q_arr)
Und die Typen für diese beiden Parameter angeben:
Jahr: int, Array oder Serie, Standardwert Keine
Monat: int, ein Array oder Serien, default Keine
Aber ich laufe in eine Typeerror versuchen, diese Art der Konstruktion zu verwenden.
import numpy as np
import pandas as pd
# (Year, Month) MultiIndex'd DataFrame
idx = pd.MultiIndex.from_product(([2017, 2016], range(1, 13)))
df = pd.DataFrame(np.random.randn(24, 2), index=idx, columns=['a', 'b'])
print(df.head())
a b
2017 1 0.406534 -0.516329
2 -0.687286 -0.066606
3 1.493217 0.539294
4 2.069313 0.415216
5 -0.212414 -1.375707
# Seems to mimic the construction example from the docs above:
pd.PeriodIndex(year=df.index.get_level_values(0),
month=df.index.get_level_values(1))
# TypeError: expected string or bytes-like object
# Same issue even if I specify inputs as NumPy arrays or lists
pd.PeriodIndex(year=df.index.get_level_values(0).values,
month=df.index.get_level_values(1).values)
pd.PeriodIndex(year=df.index.get_level_values(0).tolist(),
month=df.index.get_level_values(1).tolist())
Bonus Frage: Kann ich die Ebenen eines Multiindex entpacken? Zur Zeit habe ich
year, month = list(zip(*df.index.get_values()))
Gibt es eine vorgeschriebene Methode, um eine iterable von den Ebenen des Index zu bekommen?
Arbeiten in: Pandas 0.20.3.
Wahrscheinlich ein Bug yeah - PeriodIndex scheint eine Reihe von Problemen zu haben IMHO. – miradulo
@miradulo Ja, ich hatte das gleiche Problem vor ... https: //github.com/pandas-dev/pandas/issues/7701 – Wen