我想从大熊猫的每日数据中获取每月观察数据。这意味着,我想在每月的第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
答案 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)