Поля, созданные с помощью pivot_table, имеют проблемы с типом данных Period. - PullRequest
1 голос
/ 20 апреля 2019

У меня большой (+ 10м строк) фрейм данных с тремя столбцами: даты продаж (dtype: datetime64[ns]), имена клиентов и продажи на одного клиента. Даты продаж включают день, месяц и год в форме yyyy-mm-dd (т.е. 2019-04-19). Я обнаружил функцию панд to_period и хотел использовать period[A-MAR] dtype. Поскольку рабочий год (заканчивающийся в марте) отличается от календарного года, это именно то, что я искал. С помощью функции to_period я могу назначить соответствующие даты продаж для правильного финансового года, избегая при этом создания новых столбцов с дополнительной информацией.

Я конвертирую столбец даты следующим образом:

df_input['Date'] = pd.DatetimeIndex(df_input['Date']).to_period("A-MAR")

Теперь возникает особая проблема, когда я использую pivot_table для агрегирования данных и установки margins=True. aggfunc возвращает правильные значения в выходной таблице. Однако результаты в последней строке (итоговое значение, созданное на полях) неверны, так как отображается NaN (или в моем случае 0, как я установил fill_value = 0). Функция, которую я использую:

df_output = df_input.pivot_table(index="Customer", 
     columns = "Date",
     values = "Sales",
     aggfunc ={"Sales": np.sum},
     fill_value = 0, 
     margins= True)

Когда я не конвертирую даты в период, а использую вместо этого простой год (целое число), поля рассчитываются правильно, и в последней строке сводной выходной таблицы не отображается NaN.

Я искал по всему интернету, но не смог найти работающее решение. Я хотел бы продолжить работу с типом данных периода и просто нужно правильно рассчитать поля. Я надеюсь, что кто-то может помочь мне здесь. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...