首页 > 解决方案 > 大熊猫第 n 天到一个月的最后一天

问题描述

给定盘中数据的 DataFrame:

                          Open       High        Low       Last     Volume  No. Trades   Close Bid  No. Bids   Close Ask  No. Asks
Timestamp                                                                                                                         
1996-01-02 09:30:00        NaN        NaN        NaN        NaN        NaN         NaN   61.375000       1.0   61.406250       1.0
1996-01-02 09:31:00   61.40625   61.40625   61.40625   61.40625     4100.0         1.0         NaN       NaN         NaN       NaN
1996-01-02 09:32:00   61.40625   61.40625   61.40625   61.40625      100.0         1.0   61.375000       2.0   61.406250       2.0
1996-01-02 09:33:00        NaN        NaN        NaN        NaN        NaN         NaN   61.406250       2.0   61.437500       2.0
1996-01-02 09:35:00        NaN        NaN        NaN        NaN        NaN         NaN   61.390625       1.0   61.421875       1.0

如何选择距月底 n 天的天数?我想使用 groupby() 但我不确定如何处理日内数据,因为我的索引中不仅仅是每日值。

def select_days(data, n_days, rtn = ''):

    ### select business days
    ts_days = pd.to_datetime(data.index.date)
    businessDays = pd.bdate_range(start=data.index[0].date(), end=data.index[-1].date())
    data = data[ts_days.isin(businessDays)]

    ### select T-n days     
    data[(data.index.days_in_month - data.index.day)==n_days]
    return data

标签: pythonpandas

解决方案


熊猫技巧:

df['days_to_month_end'] = df.index.days_in_month - df.index.day
df[df.days_to_month_end==n]

或在一行中:

df[(df.index.days_in_month - df.index.day)==n]

推荐阅读