Как лучше всего рассчитать ежедневную накопленную сумму? - PullRequest
0 голосов
/ 17 октября 2019

Я нашел способ получить нужное мне число, но я надеялся получить некоторую информацию о том, как сделать это менее громоздким способом. Мне нужно текущее количество транзакций на сегодняшний день, чтобы превратить это в сюжет. У меня есть только несколько столбцов: идентификатор, дата и сумма. Вот код, который у меня есть до сих пор:

fy20 = pd.read_excel('./data/transactions.xlsx', parse_dates=['date'])
def daily_money(df):
    df = df.groupby('date').amount.sum()
    df = df.groupby(df.index.day).cumsum()
    df = df.cumsum().to_frame().reset_index()
    return df

fy20 = daily_money(fy20)

Это, кажется, для достижения цели, но, похоже, должен быть более простой путь. Пожалуйста, дайте мне знать, если у вас есть предложения, как это упростить.

1 Ответ

1 голос
/ 17 октября 2019

Мне кажется, это должно работать:

df.groupby('date')['amount'].sum().cumsum()

Это работает, потому что DataFrame.groupby автоматически сортирует по групповым ключам, поэтому накопленная сумма уже просматривает данныеему нужно.

Если вы хотите использовать его как DataFrame с новым индексом вместо Series, вы можете просто использовать Series.reset_index, который сначала преобразует серию в DataFrame, но есливам понадобится дата как обычный столбец (а не индекс), вам не нужно это делать.

...