从熊猫的每日数据框中获取每月观察数据

时间:2017-06-24 14:53:26

标签: python pandas

我想从大熊猫的每日数据中获取每月观察数据。这意味着,我想在每月的第5天(2011-01-05; 2011-02-05; 2011-03-05 ... 2011-12-05)或最近的交易日获取数据日期(例如,如果03-05不存在,则会搜索2011-03-06)。我怎么能这样做?

数据框看起来像:

Date           Close
2011-01-01     100.99
2011-01-02     100.65
......
2011-12-31     76.08

1 个答案:

答案 0 :(得分:1)

以下答案将解决您的问题,但有一点需要注意,每个月至少应该有一天的数据!

df['Date'] = pd.to_datetime(df['Date'])
df['day'] = df.Date.dt.day
df['month'] = df.Date.dt.month
df['year'] = df.Date.dt.year

def get_nearest_time_data(df, day):
    newdf = pd.DataFrame()
    for month in range(1,13):
        daydf = df[(df.day==day) & (df.month==month)]
        while (daydf.shape[0]==0):
            day+=1
            daydf = df[(df.day==day) & (df.month==month)]  
        newdf = pd.concat([newdf,daydf], ignore_index=True)
    return newdf

get_nearest_time_data(df, 5)