У меня есть данные, которые я отсортировал по дням в Excel, и теперь я хочу получить сумму ежедневных доходов за каждый день.Проблема здесь в том, что у меня есть несколько записей для дней.Таким образом, у меня может быть только одна ежедневная запись на 2018-12-05, но 5 записей на 2018-12-06Мне бы хотелось, чтобы я получил только одну запись на 2018-12-06 с совокупным дневным доходом (таким образом, все совокупные доходы сложены вместе) и среднесуточным доходом (таким образом, совокупный доход, деленный на количество записей за день.2018-12-06 это будет разделено на 5).
Итак, данные, которые у меня есть сейчас, выглядят так:
Dates Last.Price Daily.Return
19788 2018-11-23 75.18 -0.001199
19789 2018-11-23 129.04 -0.026490
19790 2018-11-26 77.84 -0.035382
19791 2018-11-26 127.98 0.008215
19792 2018-11-27 79.50 -0.021326
19793 2018-11-27 122.68 0.041413
19794 2018-11-28 80.27 -0.009686
19795 2018-11-29 80.00 0.003364
Окончательный фрейм данных должен выглядеть следующим образом
Dates Last.Price Cum.Return Average.Return
19788 2018-11-23 75.18 -0.027689 -0.0138445
19790 2018-11-26 77.84 -0.027167 -0.0135835
19792 2018-11-27 79.50 0.020087 0.0100435
19794 2018-11-28 80.27 -0.009686 -0.009686
19795 2018-11-29 80.00 0.003364 0.003364
У меня пока есть следующий кодсуммировать ежедневные доходы.Однако это не суммирует правильно.И я не знаю, как реализовать среднесуточный доход.
df = pd.read_csv('/Python Test/SP500Acquirer.csv')
def sum_from_days_prior(row, df):
'''returns sum of values in row month,
from all dates in df prior to row date'''
day = pd.to_datetime(row).day
all_dates_prior = df[df.index <= row]
same_day = all_dates_prior[all_dates_prior.index.day == day]
return same_day["Daily.Return"].sum()
df.set_index('Dates', inplace = True)
df.index = pd.to_datetime(df.index)
df["Dates"] = df.index
df.sort_index(inplace = True)
df["Day"] = df["Dates"].apply(lambda row: sum_from_days_prior (row, df))
df.drop("Dates", axis = 1, inplace = True)
print(df.tail(20))
Как было сказано ранее, этот код не суммирует ежедневную прибыль правильно.И я не знаю, как получить среднюю прибыль за дни.