【问题标题】:What's the best way to calculate a daily cumulative sum?计算每日累积总和的最佳方法是什么?
【发布时间】:2020-02-13 18:52:39
【问题描述】:

我找到了一种获得所需数字的方法,但我希望获得一些关于如何以不那么繁琐的方式完成它的意见。我需要迄今为止的总交易量才能使其成为一个情节。我拥有的数据只包含几列:id、date 和 amount。这是我到目前为止的代码:

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)

这似乎可以实现目标,但似乎必须有一个更简单的方法。如果您对如何简化此操作有任何建议,请告诉我。

【问题讨论】:

    标签: python-3.x pandas datetime pandas-groupby cumsum


    【解决方案1】:

    在我看来这应该可行:

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

    这是可行的,因为DataFrame.groupby 自动按组键排序,因此累积和已经在查看它需要的数据。

    如果您希望将其作为具有新索引而不是系列的 DataFrame,您可以使用 Series.reset_index,它首先将系列转换为 DataFrame,但除非您需要将日期作为普通列(而不是index) 之后,您就不需要这样做了。

    【讨论】:

    • 效果很好!非常感谢您对此的帮助。我非常感谢在系列上使用reset_index 的提示。我的很多绘图方法都使用 DataFrame 属性而不是 Series,它为我节省了一些工作。
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2013-09-22
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多