2017-10-14 85 views
0

我有以下DataFrame包含一些降雨量数据。我想对此进行重新格式化,以便获得带有'Month-Year'索引的24个条目的Series,以便将其绘制为一条线更容易。DataFrame列数据到系列

JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC 
Year             
2015 96.6 58.9 23.5 18.6 62.9 26.7 60.0 108.6 67.9 58.1 78.0 80.4 
2016 131.8 54.2 80.2 51.2 64.1 91.3 17.4 38.8 50.9 29.8 100.6 17.4 

我在想我可以遍历每一行,并逐个取出每个月并将其添加到一个系列。我想知道是否有更好的方法。

+0

听起来你在寻找g用于['.stack()'](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.stack.html)。 –

+0

'df.stack()'是你需要的。 – Zero

回答

1

使用unstackto_frame

ndf = df.unstack().to_frame().sort_index(level=1) 
 
      0 
    Year  
JAN 2015 96.6 
FEB 2015 58.9 
MAR 2015 23.5 
APR 2015 18.6 
MAY 2015 62.9 
JUN 2015 26.7 
JUL 2015 60.0 
AUG 2015 108.6 
SEP 2015 67.9 
OCT 2015 58.1 
NOV 2015 78.0 
DEC 2015 80.4 
JAN 2016 131.8 
FEB 2016 54.2 
MAR 2016 80.2 
APR 2016 51.2 
MAY 2016 64.1 
JUN 2016 91.3 
JUL 2016 17.4 
AUG 2016 38.8 
SEP 2016 50.9 
OCT 2016 29.8 
NOV 2016 100.6 
DEC 2016 17.4 

如果需要指数为字符串,然后

ndf.index = ['{} {}'.format(i,j) for i,j in ndf.index.values] 

如果你需要它作为一个日期,然后

ndf.index = pd.to_datetime(['{} {}'.format(i,j) for i,j in ndf.index.values])