Python 计算某一日期前一个月的金额总和

Python 计算某一日期前一个月的金额总和,python,python-3.x,pandas,Python,Python 3.x,Pandas,初始df d = {'salesman': ['Andy', 'Brown','Charlie'], 'training_date': ['2020-04-16','2021-03-04','2021-03-08'], 'sales_in_training_month':['0','2634','2856.5'] } df_initial = pd.DataFrame(data=d) df_initial 预期df d2 = {'salesman': ['Andy

初始df

d = {'salesman': ['Andy', 'Brown','Charlie'], 
     'training_date': ['2020-04-16','2021-03-04','2021-03-08'],
     'sales_in_training_month':['0','2634','2856.5']
    }
df_initial = pd.DataFrame(data=d)
df_initial
预期df

d2 = {'salesman': ['Andy', 'Brown','Charlie'], 
     'training_date': ['2020-04-16','2021-03-04','2021-03-08'],
     'sales_in_training_month':[0,2634,2856.5],
     'sales_per_day_in_training_month':[0,87.8,92.14],
     'sales_in_training_month_before_training_date':[0,263.4,644.98]
    }
df_post = pd.DataFrame(data=d2)
df_post
说明: 我想计算每个销售员在培训日期之前当月的销售额总和
安迪,0销售额,所以0。
布朗在3月4日接受训练。三月份,他的销售额为2634美元。三月份有31天,因此他在培训月份每天的销售额约为87.8美元$87.8乘以培训日前的天数(3)得出263.4美元。
我愿意接受一种更有效的方法来实现同样的目标:在培训月,即培训日期之前获得销售金额

除初始df外,从数据仓库收到的表I的格式为:

d_0 = {'salesman': ['Andy', 'Brown','Charlie'],
     'sales':['0','2634','2856.5'],
     'transaction_month':['2020-04-01','2020-05-01','2020-06-01']
    }
df_0 = pd.DataFrame(data=d_0)
df_0
注: 我使用的是近似方法,因为数据集很大,所以查询每日销售额需要很长时间。

  • 将日期转换为
    datetime
  • groupby
    “销售员”,然后按月
  • 培训日期的“天”字段提供培训前的天数(减去1后)
  • 将其除以当月的天数(当月的函数调用 数字)以获取培训前的销售比例
  • 将该比例乘以总销售额;这将为您提供培训前的插值销售

按照业务逻辑来解释为什么这是一个有用的数字,但是这些步骤应该给出您描述的结果。请注意,您示例中的算术不正确$2634/31提供84.97美元;你除以30,而不是31。

对不起,你能详细说明一下“月号函数调用”吗?我在尝试获取日期月份的天数时遇到了困难。给定月份的天数在网络上的许多地方都得到了解决。“有困难”并不能定义你的问题。一个月的天数是关键。非常感谢!