Python - 如何计算给定日期列最近 2 天的销售额总和?
Python - How to calculate the sum of sales for the last 2 days from a given date column?
A pandas 数据框 df_sales 被填充,如下所示。对于每个 ID,有多个日期,所有日期都按照问题之前显示的顺序进行分组和排序。
ID Date Sales
a 01/01/2020 20
a 02/01/2020 65
a 03/01/2020 31
b 01/01/2020 25
b 02/01/2020 15
b 03/01/2020 42
c 01/01/2020 31
c 02/01/2020 50
c 03/01/2020 25
现在,我想在同一个数据框中查看最近 2 天的销售额总和,如下所示。
ID Date Sales Sales in last 2 days
a 01/01/2020 20 20
a 02/01/2020 65 85
a 03/01/2020 31 96
b 01/01/2020 25 25
b 02/01/2020 15 40
b 03/01/2020 42 57
c 01/01/2020 31 31
c 02/01/2020 50 81
c 03/01/2020 25 75
请问这怎么可能?非常感谢。
我尝试了分组和聚合,但是我无法仅在过去 2 天进行迭代,尤其是在没有以前的日期值的情况下。
希望我理解正确,尝试使用 Shift 获取前一行值以求和并创建一个名为 'Sales in last 2 days'
的新列
import pandas as pd
id_col = ['a','a','a','b','b','b','c','c','c']
date_rng = ['2020-01-01','2020-01-02','2020-01-03','2020-01-01','2020-01-02','2020-01-03',\
'2020-01-01','2020-01-02','2020-01-03']
sales = [20,65,31,25,15,29,23,5,65]
df = pd.DataFrame({'ID':id_col, 'Date':date_rng, 'Sales':sales})
id_grp = df.groupby(['ID'])
df_list = []
for df_grp in id_grp:
df_grp[1]['Sales in last 2 days'] = df_grp[1]['Sales'] + df_grp[1]['Sales'].shift().fillna(0)
df_list.append(df_grp[1])
print(pd.concat(df_list))
A pandas 数据框 df_sales 被填充,如下所示。对于每个 ID,有多个日期,所有日期都按照问题之前显示的顺序进行分组和排序。
ID Date Sales
a 01/01/2020 20
a 02/01/2020 65
a 03/01/2020 31
b 01/01/2020 25
b 02/01/2020 15
b 03/01/2020 42
c 01/01/2020 31
c 02/01/2020 50
c 03/01/2020 25
现在,我想在同一个数据框中查看最近 2 天的销售额总和,如下所示。
ID Date Sales Sales in last 2 days
a 01/01/2020 20 20
a 02/01/2020 65 85
a 03/01/2020 31 96
b 01/01/2020 25 25
b 02/01/2020 15 40
b 03/01/2020 42 57
c 01/01/2020 31 31
c 02/01/2020 50 81
c 03/01/2020 25 75
请问这怎么可能?非常感谢。
我尝试了分组和聚合,但是我无法仅在过去 2 天进行迭代,尤其是在没有以前的日期值的情况下。
希望我理解正确,尝试使用 Shift 获取前一行值以求和并创建一个名为 'Sales in last 2 days'
的新列import pandas as pd
id_col = ['a','a','a','b','b','b','c','c','c']
date_rng = ['2020-01-01','2020-01-02','2020-01-03','2020-01-01','2020-01-02','2020-01-03',\
'2020-01-01','2020-01-02','2020-01-03']
sales = [20,65,31,25,15,29,23,5,65]
df = pd.DataFrame({'ID':id_col, 'Date':date_rng, 'Sales':sales})
id_grp = df.groupby(['ID'])
df_list = []
for df_grp in id_grp:
df_grp[1]['Sales in last 2 days'] = df_grp[1]['Sales'] + df_grp[1]['Sales'].shift().fillna(0)
df_list.append(df_grp[1])
print(pd.concat(df_list))