我有一个pandas数据框,其中包含谷歌的股票详细信息。数据框的索引是日期(从2004-08-19到2018-05-05)。我想根据年份拆分数据,并将库存的收盘价存储在新的数据框中。新数据框的列应如下所示 [2004,2005,2006,... 2017,2018]。数据框的行应包含特定年份每一天股票价格的收盘价。
如何实现这一目标?
提前致谢
答案 0 :(得分:1)
您可以按DatetimeIndex.strftime
和DatetimeIndex.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