【问题标题】:How to parse data frames based on date如何根据日期解析数据帧
【发布时间】:2018-06-07 05:21:06
【问题描述】:
我有一个带有谷歌股票详细信息的熊猫数据框。数据框的索引是日期(从 2004-08-19 到 2018-05-05)。我想根据年份拆分数据并将股票的收盘价存储在一个新的数据框中。新数据框的列应如下
[2004, 2005, 2006, ... 2017, 2018]。数据框的行应包含特定年份每一天的股票价格收盘价。
如何做到这一点?
提前致谢
【问题讨论】:
标签:
python
pandas
data-manipulation
【解决方案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