python – 如何反转滚动总和?
发布时间:2020-12-20 11:59:02 所属栏目:Python 来源:网络整理
导读:我在分组数据框架上计算了滚动总和,但是它加起来的方式错误,它是未来的总和,当我需要过去的总和时. 我在这做错了什么? 我导入数据并按维度和日期排序(我已尝试删除日期排序) df = pd.read_csv('Input.csv',parse_dates=True)df.sort_values(['Dimension','D
我在分组数据框架上计算了滚动总和,但是它加起来的方式错误,它是未来的总和,当我需要过去的总和时.
我在这做错了什么? 我导入数据并按维度和日期排序(我已尝试删除日期排序) df = pd.read_csv('Input.csv',parse_dates=True) df.sort_values(['Dimension','Date']) print(df) 然后我创建一个新列,它是一个按滚动窗口分组的多索引 new_column = df.groupby('Dimension').Value1.apply(lambda x: x.rolling(window=3).sum()) 然后我将索引重置为与原始索引相同 df['Sum_Value1'] = new_column.reset_index(level=0,drop=True) print(df) 我也尝试在计算之前反转索引,但也失败了. 输入 Dimension,Date,Value1,Value2 1,4/30/2002,10,20 1,1/31/2002,10/31/2001,7/31/2001,4/30/2001,1/31/2001,10/31/2000,20 2,20 3,20 输出: Dimension Date Value1 Value2 Sum_Value1 0 1 4/30/2002 10 20 NaN 1 1 1/31/2002 10 20 NaN 2 1 10/31/2001 10 20 30.0 3 1 7/31/2001 10 20 30.0 4 1 4/30/2001 10 20 30.0 5 1 1/31/2001 10 20 30.0 6 1 10/31/2000 10 20 30.0 7 2 4/30/2002 10 20 NaN 8 2 1/31/2002 10 20 NaN 9 2 10/31/2001 10 20 30.0 10 2 7/31/2001 10 20 30.0 11 2 4/30/2001 10 20 30.0 12 2 1/31/2001 10 20 30.0 13 2 10/31/2000 10 20 30.0 目标输出: Dimension Date Value1 Value2 Sum_Value1 0 1 4/30/2002 10 20 30.0 1 1 1/31/2002 10 20 30.0 2 1 10/31/2001 10 20 30.0 3 1 7/31/2001 10 20 30.0 4 1 4/30/2001 10 20 30.0 5 1 1/31/2001 10 20 NaN 6 1 10/31/2000 10 20 NaN 7 2 4/30/2002 10 20 30.0 8 2 1/31/2002 10 20 30.0 9 2 10/31/2001 10 20 30.0 10 2 7/31/2001 10 20 30.0 11 2 4/30/2001 10 20 30.0 12 2 1/31/2001 10 20 Nan 13 2 10/31/2000 10 20 NaN 解决方法
您可以通过window-1移动结果以获得左对齐的结果:
df["sum_value1"] = (df.groupby('Dimension').Value1 .apply(lambda x: x.rolling(window=3).sum().shift(-2))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |