Python 3.x 将两个数据帧划分为NaN
我有两个数据帧,其中一个带有一个度量,截止到月的最后一天。另一个包含整个月的合计指标。前者(Python 3.x 将两个数据帧划分为NaN,python-3.x,pandas,Python 3.x,Pandas,我有两个数据帧,其中一个带有一个度量,截止到月的最后一天。另一个包含整个月的合计指标。前者(月利润)如下所示: profit yyyy_mm_dd 2018-01-01 8797234233.0 2018-02-01 3464234233.0 2018-03-01 5676234233.0 ... 2019-10-01 4368234233.0 employees yyyy_mm_dd 2018-01-31
月利润
)如下所示:
profit
yyyy_mm_dd
2018-01-01 8797234233.0
2018-02-01 3464234233.0
2018-03-01 5676234233.0
...
2019-10-01 4368234233.0
employees
yyyy_mm_dd
2018-01-31 924358
2018-02-28 974652
2018-03-31 146975
...
2019-10-31 255589
后者(monthly_employees
)如下所示:
profit
yyyy_mm_dd
2018-01-01 8797234233.0
2018-02-01 3464234233.0
2018-03-01 5676234233.0
...
2019-10-01 4368234233.0
employees
yyyy_mm_dd
2018-01-31 924358
2018-02-28 974652
2018-03-31 146975
...
2019-10-31 255589
我希望每个员工都能获得利润,所以我做到了:
profit_per_employee = (monthly_profit['profit']/monthly_employees['employees'])*100
这是我得到的输出:
yyyy_mm_dd
2018-01-01 NaN
2018-01-31 NaN
2018-02-01 NaN
2018-02-28 NaN
我怎样才能解决这个问题?一个数据帧是一个月的最后一天,另一个是一个月的第一天,这是由于滚动与非滚动数据造成的
月利润
是对每日利润数据进行分组和求和的结果:
monthly_profit = df.groupby(['yyyy_mm_dd'])[['proft']].sum()
monthly_profit = monthly_profit.resample('MS').sum()
虽然monthly_employees
是一个连续的总数,所以我需要取每个月最后一天的当前值:
monthly_employees = df.groupby(['yyyy_mm_dd'])[['employees']].sum()
monthly_employees = monthly_employees.groupby([monthly_employees.index.year, monthly_employees.index.month]).tail(1)
将
MS
更改为M
,以便在月末同时匹配DatatimeIndex
:
monthly_profit = monthly_profit.resample('M').sum()