Я не уверен, почему у вас есть два столбца DateTime, я создал собственный пример, чтобы продемонстрировать:
ind = pd.date_range('1/1/2019', '30/1/2019', freq='H')
df = pd.DataFrame({'Last_Price':np.random.random(len(ind)) + 100}, index=ind)
def noon_price(df):
noon_price = df.loc[df.index.hour == 12, 'Last_Price'].values
noon_price = noon_price[0] if len(noon_price) > 0 else np.nan
df['noon_price'] = noon_price
return df
df.groupby(df.index.day).apply(noon_price).reindex(ind)
reindex
по умолчанию будет заполнять строки каждого дня noon_price
.
Чтобы добавить столбец с ценой на следующий день *1009* на следующий день, вы можете shift
столбец на 24 строки вниз, например:
df['T+1'] = df.noon_price.shift(-24)