【问题标题】: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.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 2015-09-09
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    相关资源
    最近更新 更多