J'ai une série multi-index comme celle-ci:
Year Month
2012 1 444
2 222
3 333
4 1101
que je veux transformer en:
Date Value
2012-01 444
2012-02 222
2012-03 333
2012-04 1101
pour tracer une ligne.
J'ai essayé les deux series.unstack(level=0)
et series.unstack(level=1)
, mais cela crée une matrice
In[1]: series.unstack(level=0)
Out[1]:
Year 2012 2013 2014 2015 2016 2017 2018
Month
1 444 ... ... ... ... ... ...
2 222 ... ... ... ... ... ...
3 333 ... ... ... ... ... ...
4 1101 ... ... ... ... ... ...
Qu'est-ce que je rate?
À utiliser Index.to_frame
avec la colonne de to_datetime
travail si elle a également été ajoutée Day
et à nouveau:
s.index = pd.to_datetime(s.index.to_frame().assign(Day=1))
print (s)
2012-01-01 444
2012-02-01 222
2012-03-01 333
2012-04-01 1101
Name: a, dtype: int64
Pour une seule colonne, DataFrame
utilisez Series.to_frame
:
df1 = s.to_frame('Value')
print (df1)
Value
2012-01-01 444
2012-02-01 222
2012-03-01 333
2012-04-01 1101
Si besoin, PeriodIndex
ajoutez Series.dt.to_period
:
s.index = pd.to_datetime(s.index.to_frame().assign(Day=1)).dt.to_period('m')
print (s)
2012-01 444
2012-02 222
2012-03 333
2012-04 1101
Freq: M, Name: a, dtype: int64
df2 = s.to_frame('Value')
print (df2)
Value
2012-01 444
2012-02 222
2012-03 333
2012-04 1101
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots