【问题标题】:Python - Sum of column values between 2 datesPython - 2个日期之间的列值总和
【发布时间】:2021-06-30 11:26:03
【问题描述】:

我正在尝试在我的数据框中创建一个新列:

设 X 为可变天数。

Date Units Sold Total Units sold in the last X days
0 2019-01-01 19:00:00 5
1 2019-01-01 15:00:00 4
2 2019-01-05 11:00:00 1
3 2019-01-12 12:00:00 3
4 2019-01-15 15:00:00 2
5 2019-02-04 18:00:00 7

对于每一行,我需要总结已售出的单位数 + 过去 10 天内售出的所有单位数(假设 x = 10 天)

期望的结果:

Date Units Sold Total Units sold in the last X days
0 2019-01-01 19:00:00 5 5
1 2019-01-01 15:00:00 4 9
2 2019-01-05 11:00:00 1 10
3 2019-01-12 12:00:00 3 4
4 2019-01-15 15:00:00 2 6
5 2019-02-04 18:00:00 7 7

我在使用句号之前使用过.rolling(window=) 方法,我认为以下方法可以提供帮助

df = df.rolling("10D").sum() 但我的语法不正确!!

请帮忙!

【问题讨论】:

    标签: python dataframe sum time-series


    【解决方案1】:

    试试:

    df["Total Units sold in the last 10 days"] = df.rolling(on="Date", window="10D", closed="both").sum()["Units Sold"]
    print(df)
    

    打印:

            Date  Units Sold  Total Units sold in the last 10 days
    0 2019-01-01           5                                   5.0
    1 2019-01-01           4                                   9.0
    2 2019-01-05           1                                  10.0
    3 2019-01-12           3                                   4.0
    4 2019-01-15           2                                   6.0
    5 2019-02-04           7                                   7.0
    

    【讨论】:

    • 我的数据是 2019-01-01 19:00:00 格式有关系吗?我的错误是“ValueError:传递值的形状是 (500, 2),索引意味着 (500, 1)”。我的数据是 500 行
    • @hewokiti 你把["Units Sold"] 放在表达式的末尾了吗?您正在尝试将两列数据传递给一列。
    • 我做了...在代码的前面,我按日期排序并重置了索引。这会导致这个问题吗?
    • 我做了 df.reset() 索引操作,它解决了问题。对不起,我没有在帖子中提到它,我没有意识到这很重要。谢谢!!
    猜你喜欢
    • 2018-06-14
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多