Дайвинг двух фреймов дает NaN - PullRequest
2 голосов
/ 31 октября 2019

У меня есть два кадра данных, один с метрикой по состоянию на последний день месяца. Другой содержит показатель, суммированный за весь месяц. Первый (monthly_profit) выглядит так:

              profit
yyyy_mm_dd
2018-01-01    8797234233.0  
2018-02-01    3464234233.0
2018-03-01    5676234233.0
...
2019-10-01    4368234233.0

В то время как последний (monthly_employees) выглядит так:

              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 является результатом группировки и суммирования дневной прибылиданные:

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)

1 Ответ

1 голос
/ 31 октября 2019

Измените MS на M на конец месяца для совпадения обоих DatatimeIndex:

monthly_profit = monthly_profit.resample('M').sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...