【问题标题】:Pandas resample by first day in my dataPandas 在我的数据中按第一天重新采样
【发布时间】:2015-07-04 11:29:44
【问题描述】:

我在 pandas 数据框中导入了 Yahoo Finance 每日股价。我想使用.resample() 将其转换为每月第一个每日报价的价格。

.resample('MS', how='first')

返回每个月的正确价格但是它将指数更改为当月的第一天,而一般来说,一个月的第一天的报价可能是每月的第二天或第三天,因为节假日和周末。

我如何通过仅重新采样现有日期而不更改它们来使用resample()

【问题讨论】:

    标签: python pandas dataframe resampling


    【解决方案1】:

    我认为您想要BMS(营业月开始):

    .resample('BMS').first()
    

    注意:在 pandas 0.18 之前,这是使用已弃用的 how kwarg 完成的:

    .resample('BMS', how='first')
    

    另一种方法是 groupby month 并使用普通的 ol' groupby 获取第一个(例如,使用 nth 获取每个组中的第一个条目):

    .groupby(pd.Grouper(freq='M')).nth(0)
    

    注意:在 pandas 0.21 之前,这是使用已弃用的 TimeGrouper 完成的:

    .groupby(pd.TimeGrouper('M')).nth(0)
    

    【讨论】:

    • groupby 解决方案是我一直在寻找的,但对我来说重新采样仍然有点奇怪,它并没有真正从现有日期采样(就像我们在 groupby 中所做的那样)。非常感谢安迪
    • @Andy Hayden 这似乎不适用于最新版本的熊猫。关于现在如何实现这一目标的任何想法?
    • @derNincompoop API 现在是 s.resample('BMS').first()
    猜你喜欢
    • 2019-09-30
    • 2019-04-15
    • 2013-01-13
    • 1970-01-01
    • 2019-06-14
    • 2017-09-19
    • 2013-11-22
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多