Pandas resample by first day in my data

纵饮孤独 提交于 2019-12-21 12:21:25

问题


I have a Yahoo finance daily stock price imported in a pandas dataframe. I want to use .resample() to convert it to the monthly stock price by taking the price of the first QUOTED daily price of each month.

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

returns the correct price of each month but it changes the index to the first day of the month while in general the first day of a month for a quoted price maybe 2nd or 3rd of the month because of holidays and weekends.

How can I use resample() by only resampling the existing dates and not changing them?


回答1:


I think what you want is BMS (business month start):

.resample('BMS').first()

Note: Prior to pandas 0.18 this was done using the deprecated how kwarg:

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

An alternative would be to groupby month and take the first with a plain ol' groupby (and e.g. use nth to get the first entry in each group):

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

Note: Prior to pandas 0.21 this was done using the deprecated TimeGrouper:

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


来源:https://stackoverflow.com/questions/29871564/pandas-resample-by-first-day-in-my-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!