如何根据日期解析数据框

时间:2018-06-07 05:21:07

标签: python pandas data-manipulation

我有一个pandas数据框,其中包含谷歌的股票详细信息。数据框的索引是日期(从2004-08-19到2018-05-05)。我想根据年份拆分数据,并将库存的收盘价存储在新的数据框中。新数据框的列应如下所示 [2004,2005,2006,... 2017,2018]。数据框的行应包含特定年份每一天股票价格的收盘价。

如何实现这一目标?

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以按DatetimeIndex.strftimeDatetimeIndex.year创建MultiIndex,然后按unstack重新塑造:

rng = pd.date_range('2004-08-19', periods=10, freq='6MS')
df = pd.DataFrame({'Price': range(10)}, index=rng)  
print (df)
            Price
2004-09-01      0
2005-03-01      1
2005-09-01      2
2006-03-01      3
2006-09-01      4
2007-03-01      5
2007-09-01      6
2008-03-01      7
2008-09-01      8
2009-03-01      9

df.index = [df.index.strftime('%m-%d'), df.index.year]
df = df['Price'].unstack()
print (df)
       2004  2005  2006  2007  2008  2009
03-01   NaN   1.0   3.0   5.0   7.0   9.0
09-01   0.0   2.0   4.0   6.0   8.0   NaN

类似的解决方案,但列年份是字符串:

df.index = df.index.astype(str).str.split('-', 1, expand=True)
df = df['Price'].unstack(0)
print (df)
       2004  2005  2006  2007  2008  2009
03-01   NaN   1.0   3.0   5.0   7.0   9.0
09-01   0.0   2.0   4.0   6.0   8.0   NaN